[Flash/ActionScript] 5일차 - DisplayObject 움직임

[Flash/ActionScript] 5일차 - DisplayObject 움직임


1. 엔터프레임을 이용한 움직임

import flash.display.MovieClip;
import flash.events.Event;

var mc:MovieClip = this.getChildByName("mc") as MovieClip;
var speed:Number = int(Math.random()*4)+1; // 1~4 사이의 값을 임의로 생성

this.addEventListener(Event.ENTER_FRAME, enterFrameListener);
trace(speed);

function enterFrameListener(ev:Event):void{
	mc.x += speed;
}


2. 감속공식을 이용한 움직임

import flash.events.Event;

this.y = 100;
this.x = 0;
this.addEventListener(Event.ENTER_FRAME, enterFrameListener);

function enterFrameListener(ev:Event):void{
//감속공식 : 현재위치 = 현재위치 +(목적지-현재위치)*0.5
//현재값 += ( 타깃값 - 현재값)* 0보다 크고 1보다 작은 상수
	this.x += ((stage.stageWidth-this.width)-this.x)*0.05;
}

3. 마우스를 부드럽게 따라다니는 무비클립

import flash.display.MovieClip;
import flash.events.Event;

var mc:MovieClip = this.getChildByName("mc") as MovieClip;

mc.addEventListener(Event.ENTER_FRAME, enterFrameListener);

function enterFrameListener(ev:Event):void{
	mc.x += (this.mouseX - mc.x) * 0.3;
	mc.y += (this.mouseY - mc.y) * 0.3;
}

4.일정시간으로 반복호출

//Stage 메인타임라인
import flash.utils.Timer;
import flash.events.TimerEvent;
import flash.display.MovieClip;

var timer:Timer = new Timer(200); //이멘트가 0.2초마다 무한정 발생하는 타이머객체를 생성

timer.addEventListener(TimerEvent.TIMER, timerListener);
timer.start(); //이벤트 등록

function timerListener(ev:TimerEvent):void{
	var snow:MovieClip = new Snow() as MovieClip;
	snow.x = Math.random() * stage.stageWidth;
	snow.y = -(snow.height /2);
	this.addChild(snow);
}
 //Snow 무비클립
import com.greensock.easing.Linear;
import com.greensock.TweenLite;

this.scaleX = this.scaleY = Math.random(); //객체의 크기를 랜덤하게변경

var time:Number = Math.random()*3+3; //화면이동속도를 랜덤하게정의(3~6)
var tgrotation:Number = Math.random()*180-90; 회전값을 임의로 정의(-90~90)
var tgX:Number = this.x + Math.random()*100-50; //이동할 x좌표를 현재좌표 근처 (-50~50)으로 정의
TweenLite.to(this, time, {
    x:tgX, 
    y:stage.stageHeight+this.height/2, 
    rotaion:tgrotation, 
    ease:Linear.easeNone, 
    onComplete:remove //종료되면 remove 함수호출
});

function remove():void{
	parent.removeChild(this); //자신을 부모컨테이너에서 빼내어 사라지게 한다.
}

댓글

이 블로그의 인기 게시물

[파이썬] #2-모듈설치 및 스파이더(spyder)사용

[Tool-Tip] 에디트플러스에서 자동정렬기능 추가하기

[파이썬] #1- 아나콘다 설치, 아나콘다 파이썬 환경 만들기