3. offset( dx:Number, dy:Number ) : Void
-> point가 매개변수로 입력된 값만큼 이동한다.
-
-
-

- Cir클래스에서 100개의 무비클립을 생성 후 이벤트로 호출한다. 1초당 해당 프레임 수 만큼.
여기서 무비클립의 위치를 스테이지의 정중앙으로 위치해주고 화면에 표시될 수 있도록 addChild해줌.
첫 무비클립에서부터, 정중앙에서 3만큼 떨어지고 Math.radom()*Math.PI*2 각도에 위치한 pt를
Point 객체로 생성. 그리고 pt2라는 Point객체를 만들어 e.target(=Cir에서 생성한 무비클립)의 x, y좌표를
초기화하여 생성후 처음 pt의 위치를 방금 생성한 pt2에 offset시킴(=재정렬).
그리고 마지막으로 실제 무비클립의 위치를 offset한 pt2의 x, y의 좌표로 대입해줌.
원래는 저런 소스였지만, cpu 점유율이 높다는 스터디 선생님의 지적을 받고 수정해주셨다!!
실제 flash가 전체 중에서 25~30%을 차지하던 것이 20~25%로! 내가 봤을 때 차이는 아주 미미하였으나,
1%를 줄이기 위해 몇 일 밤을 샐 날이 곧 올꺼라는.... 그럴 스멜....ㅋㅋ
[code as3]
package classes.view
{
import flash.display.Sprite;
import flash.display.MovieClip;
import flash.events.Event;
import flash.geom.Point;
public class Main extends Sprite
{
public function Main()
{
super();
config();
addEventListener( Event.ENTER_FRAME, loop );
}
private function config() : void
{
for( var i:int = 0; i < 100; i++ )
{
var temp:MovieClip = new Cir();
temp.x = stage.stageWidth / 2;
temp.y = stage.stageHeight / 2;
addChild( temp );
}
}
private function loop( e:Event ) : void
{
for(var i:int = 0; i < 100; i++)
{
var pt:Point = Point.polar( 3, Math.random() * Math.PI*2 );
var pt2:Point = new Point( getChildAt(i).x, getChildAt(i).y );
pt2.offset( pt.x, pt.y );
getChildAt(i).x = pt2.x;
getChildAt(i).y = pt2.y;
}
}
}
}
[/code]
댓글 없음:
댓글 쓰기