forked from: forked from: flash on 2010-2-25
forked from forked from: flash on 2010-2-25 (diff: 42)
ただ単純にsin波とcos波の波線を2つ同時に表示しようと思ったんですが、 なぜかこんなんになってしまったのです。すみません。どなたかよろしくお願いします。
ActionScript3 source code
/**
* Copyright mattypang ( http://wonderfl.net/user/mattypang )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/23Jp
*/
package {
import flash.display.Sprite;
import flash.events.Event;
import flash.text.TextField;
public class Wave extends Sprite {
private var angle:Number = 0;
private var centerY:Number = 200;
private var range:Number = 50;
private var xspeed:Number = 1;
private var yspeed:Number = .05;
private var xpos:Number;
private var ypos:Number;
private var xpos2:Number;
private var ypos2:Number;
public function Wave() {
init();
}
public function init():void{
xpos = 0;
xpos2 = 0;
graphics.lineStyle(1, 0, 1);
graphics.moveTo(0, centerY);
addEventListener(Event.ENTER_FRAME, onEnterFrame);
ypos = centerY + Math.sin(angle) * range;
ypos2 = centerY + Math.cos(angle) * range;
}
public function onEnterFrame(event:Event):void {
graphics.moveTo(xpos,ypos);//描画の開始地点を旧xpos,ypos地点に移動
xpos += xspeed;//xpos,yposを計算
angle += yspeed;
ypos = centerY + Math.sin(angle) * range;
graphics.lineTo(xpos, ypos);//新xpos,yposへラインを描写
graphics.moveTo(xpos2,ypos2);//描画の開始地点を旧xpos2,ypos2地点に移動
xpos2 += xspeed;
angle += yspeed;
ypos2 = centerY + Math.cos(angle) * range;
graphics.lineTo(xpos2, ypos2);
if(xpos > stage.stageWidth){
removeEventListener(Event.ENTER_FRAME, onEnterFrame);
addEventListener(Event.ADDED_TO_STAGE,function(e:Event):void{if("autoSize" in e.target){e.target.autoSize="left";}},true);
TextField(addChild(new TextField)).text = "描画終了";
}
}
}
}