as3 callback function 1
Adobe Flash/ActionScript 3.0 2011. 5. 12. 10:53 /**
* @private
* 마우스 효과
*
* seedTransparent : 내부 메서드
* seed.onTransparent : 외부 Seed 클래스 내부의 _onTransprarent 속성에
* seedTransparent함수 전달.
* scaleX, scaleY : 객체의 가로, 세로 크기 (백분율)
*/
private function mouseMoveHandler(event:MouseEvent):void
{
var seed:Seed = new Seed(); // 마우스효과 줄 객체 생성
seed.onTransparent = seedTransparent; // 함수명만 적어주면됨
seed.x = mouseX; // 객체의 X좌표 값을 현재 마우스의 X좌표로 위치 설정
seed.y = mouseY; // 객체의 y좌표 값을 현재 마우스의 y좌표로 위치 설정
var ratio:Number = Math.random(); // 임의의 비율값
seed.scaleX = ratio; // 객체 가로크기 임의의 비율값 적용
seed.scaleY = ratio; // 객체 세로크기 임의의 비율값 적용
seed.alpha = Math.random(); // 임의의 알파값 적용
addChild(seed); // 객체 화면에 표시
}
/**
* @private
* 객체 제거
*
* @param diaplay Seed 객체
*/
private function seedTransparent(display:DisplayObject):void
{
removeChild(display); // 화면에서 제거
}
}//class
}//package
//Seed.as
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.geom.ColorTransform;
public class Seed extends Sprite
{
private var vx:Number;
private var vy:Number;
private var gravity:Number;
private var _onTransparent:Function;
public function Seed()
{
super(); // Sprite 객체 생성
var sp:Sprite = new Sprite();
sp.graphics.beginFill(Math.random() * 0x1000000);
sp.graphics.drawCircle(mouseX, mouseY, 10);
sp.graphics.endFill();
this.addChild(sp);
vx = Math.random() * 10 - 5; // -5 ~ 5 사이값
vy = Math.random() * 10; //0 ~ 10 사이값 : 아래로 떨어질거라 무조건 상수값
gravity = 1; // 중력가속도 값 설정
addEventListener(Event.ENTER_FRAME, alphaEnterFrameHandler);
}
/**
* @private
* seeTransparent() 설정
*
* @param value CallBack 클래스의 seedTransparent() 메서드
*/
public function set onTransparent(value:Function):void
{
_onTransparent = value; // seeTransparent()를 _onTransparent로 설정
}
/**
* @private
* seeTransparent() 조정
*/
public function get onTransparent():Function
{
return _onTransparent;
}
/**
* @private
* 객체 알파값 설정
*/
private function alphaEnterFrameHandler(event:Event):void
{
vy = vy + gravity; // 중력가속도값(gravity)에 임의의 y속도를 더하여 중력가속도가 됨
this.x += vx; // X속도 값을 현재 객체의 x좌표값으로 설정
this.y += vy; // Y속도 값을 현재 객체의 Y좌표값으로 설정
this.alpha -= 0.05; // 화면에서 점점사라지게 설정
this.scaleX += 0.05; // 가로크기 증가
this.scaleY += 0.05; // 세로크기 증가
var ct:ColorTransform = this.transform.colorTransform; // 객체 색상 변경
ct.color = Math.random() * 0xFFFFFF; // 임의의 색상 설정
this.transform.colorTransform = ct; // 설정 색상값 적용
if(this.alpha < 0) // 객체가 화면에 보이지 않으면
{
removeEventListener(Event.ENTER_FRAME, alphaEnterFrameHandler); //알파로 안보일뿐 사라지지(삭제)는 않음
if(_onTransparent != null) // _onTransparent속성에 함수가 설정되지 않으면
{
_onTransparent(this); // CallBack 클래스의 seedTransparent()의 파리미터로 객체를 넘겨준다.
}//if
}//if
}//alphaEnterFrameHandler
}//class
}//package
참조: http://butibutiuk.blogspot.com/
'Adobe Flash > ActionScript 3.0' 카테고리의 다른 글
Tile Base Game (0) | 2011.05.17 |
---|---|
as3 callback function 2 (0) | 2011.05.12 |
Flash CS5 Code Hint for Mac (0) | 2011.04.19 |
SWC + FDT4 = SWF (0) | 2011.03.10 |
FlashDevelop + Molehill + Away3d_4.0.0 (0) | 2011.03.10 |