AS3引き続き勉強中。
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.text.TextField;
/**
* 2008.08
* 線形上下運動
*/
public class Sample03_a extends Sprite
{
private var ball:Oyaji;
private var angle:Number = 0;
private var text:TextField;
private var speed:Number = 0.1;
private var centerY:Number = stage.stageHeight;
private var range:Number = 50;
public function Sample03_a()
{
init();
}
private function init():void {
ball = new Oyaji();
addChild(ball);
//centerに
ball.x = stage.stageWidth / 2;
addEventListener(Event.ENTER_FRAME, onEnterFrame);
//text
text = new TextField;
stage.addChild(text)
text.x = 40;
text.y = 175;
text.width = 200;
text.height = 20;
text.selectable = false;
text.textColor = 0xffffff;
}
public function onEnterFrame(evemt:Event) {
//Stageの半分の高さ + サインを求めてrangeから-rangeまでの振幅を算出
ball.y = centerY / 2 + Math.sin(angle) * range;
angle += speed;
var bally_num:Number = ball.y;
text.text = String(bally_num);
}
}
}
ball.y = centerY / 2 + Math.sin(angle) * range;
angleのサインを求めてそれにrange(50)をかける
幅はrange(50)から-range(-50)まで
それにStage分の高さ(200)を2で割った分を足す(100)
振幅は 150 から 50 まで
angle += speed;
angleにspeed分を足していき上下運動をさせる(値が高いとspeed up)
ちなみに
ball = new Oyaji();
記事as3.0:表示リスト/親子関係で作った親父グラフィックを分けて親父クラスを作成してみました。
package
{
import flash.display.Sprite;
/**
* 2008.08.07
*/
public class Oyaji extends Sprite
{
public function Oyaji() {
init();
}
public function init():void {
//Oyaji用
graphics.beginFill(0xffffff);
graphics.drawCircle(0, 0, 20);
graphics.endFill();
graphics.beginFill(0xaa0000);
graphics.drawCircle(0, 0, 10);
graphics.endFill();
graphics.beginFill(0x000000);
graphics.drawCircle(0, 0, 6);
graphics.endFill();
graphics.beginFill(0xffffff);
graphics.drawCircle(-5, -5, 3);
graphics.endFill();
}
}
}
好きなものを使って勉強すると楽し~。




0