In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

円をメビウスの輪っぽい感じで動かしてみる

メビウスの輪っぽい感じで動かしてみる

研究の副産物です。1年前の。
・・・1年前のほうが面白いことやってるなぁ・・・。

スピードがガンガン増すことによって
いくつものボールが乱舞してるように見えなくもない。

数値は増え続けるので、ある程度のところでやめてあげてください。

Speedが360に近づくとボールがひとつに戻ります
数学をもっとわかればもっと面白いものが作れそう。
Get Adobe Flash player
by Hiiragi 01 May 2009
    Embed
package
{
	/* メビウスの輪っぽい感じで動かしてみる
	 * 
	 * 研究の副産物です。1年前の。
	 * ・・・1年前のほうが面白いことやってるなぁ・・・。
	 * 
	 * スピードがガンガン増すことによって
	 * いくつものボールが乱舞してるように見えなくもない。
	 * 
	 * 数値は増え続けるので、ある程度のところでやめてあげてください。
	 * 
	 * Speedが360に近づくとボールがひとつに戻ります
	 * 数学をもっとわかればもっと面白いものが作れそう。
	 * 
	 */
	
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.text.TextField;
	import flash.text.TextFormat;
	import flash.text.TextFieldAutoSize;
	
	[SWF(width="465",height="465",frameRate="40",backgroundColor="0xFFFFFF")] 
     
	public class Main extends Sprite
	{
		private const PI:Number = Math.PI;
		
		private var _cx:uint = stage.stageWidth / 2;
		private var _cy:uint = stage.stageHeight / 2;
		
		private var _circle:circle;
		private var _r:uint = 200;
		private var _radian:Number = 0;
		private var _speed:Number = 0;
		
		private var txt1:TextField = new TextField();
		private var txt2:TextField = new TextField();
		
		public function Main()
		{
		  init();
		}

		private function init():void
		{
		  //円を登録
		  _circle = new circle(0x0000FF,20);
		  addChild(_circle);
		  moveCircle();
		  
		  //テキスト配置
		  txt1.defaultTextFormat = new TextFormat(null, 20,0x000000);
		  txt1.x = 0;
		  txt1.y = 10;
		  txt1.autoSize = TextFieldAutoSize.LEFT;
		  addChild(txt1);
		  
		  txt2.defaultTextFormat = new TextFormat(null, 20,0x000000);
		  txt2.x = 0;
		  txt2.y = 30;
		  txt2.autoSize = TextFieldAutoSize.LEFT;
		  addChild(txt2);
		  
		  //イベント登録
		  this.addEventListener(Event.ENTER_FRAME, moveCircle);
		}
		
		private function moveCircle(e:Event = null):void 
		{
			_speed += 0.002;	//加速度増加装置
			_radian += _speed;	//どんどん加速
			_radian = Number(_radian.toFixed(4));	//小数点多すぎなのでなんとなくある程度で切ってみる
			
			_circle.x = _cx + _r * Math.cos(_radian);
			//_circle.y = _cy + _r * Math.sin(_radian * 2);
			_circle.y = _cy + _r * Math.sin(_radian) * Math.cos(_radian);
			
			txt1.text = "speed = " + Math.floor(_speed * 180 / PI).toString();
			txt2.text = "degree = " + Math.floor(_radian * 180 / PI).toString();
		}
	
	}

}

import flash.display.Sprite;

internal class circle extends Sprite{
	
	public function circle(color:uint,size:uint) {
		this.graphics.beginFill(color);
		this.graphics.drawCircle(0, 0, size);
		this.graphics.endFill();
	}
	
}