플래시의 타임라인에서 레이어 마스크를 사용하는 경우에, addChild() 메소드 사용 시에 주의가 필요합니다.
다음과 같이 레이어 마스크를 적용한 무비에, 액션스크립트로 생성한 무비클립을 애드해 보겠습니다.

1
2
3
4
5
6
var mc:MovieClip = new MovieClip();
var g:Graphics = mc.graphics;
g.beginFill(0xFF0000);
g.drawRect(50, 50, 200, 100);
g.endFill();
addChild(mc);

그러면 다음과 같이, 애드된 무비클립도 마스크가 적용되어 버리는 문제가 생깁니다.

아마도 Layer 2와 Layer 1 사이로 애드가 되면서, 마스크가 씌워지는 것으로 보입니다.

Layer 1 위에 다른 객체가 위치한 경우에는 마스크되지 않고 정상적으로 보여집니다. 또는 addChildAt(mc, 0)와 같이 사용해도 문제가 발생하지 않습니다.
레이어 마스크를 사용할 때에는 이런 부분을 염두에 두고 개발해야 겠네요.

 

Gapless sound looping in ActionScript 3.0

보통 사운드 루핑을 만들 때 Event.SOUND_COMPLETE 이벤트나 Sound.play(0, 999);를 사용할텐데요. 이 경우에 음악이 재생되는 사이에 약간의 틈이 발생합니다. 다음 플래시 무비처럼 말이죠.

이 파일은 아래의 코드와 같이, Event.SOUND_COMPLETE를 사용하여 사운드를 루프시키고 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import flash.media.*;
import flash.events.*;
import flash.utils.Timer;
 
var snd:Sound = new loop();
var chn:SoundChannel;
 
function playSound():void
{
	if(chn){
		chn.removeEventListener(Event.SOUND_COMPLETE, sndListener);
	}
	chn = snd.play();
	chn.addEventListener(Event.SOUND_COMPLETE, sndListener);
}
 
function sndListener(e:Event):void
{
	playSound();
}
 
lbl.text = "Loop with Event.SOUND_COMPLETE";
btn2.enabled = false;
btn1.addEventListener(MouseEvent.CLICK, clickListener1);
btn2.addEventListener(MouseEvent.CLICK, clickListener2);
function clickListener1(e:MouseEvent):void
{
	playSound();
	btn1.enabled = false;
	btn2.enabled = true;
}
function clickListener2(e:MouseEvent):void
{
	btn1.enabled = true;
	btn2.enabled = false;
	chn.stop();
}

Continue reading »

 

XML에 차일드 노드를 추가하는 것은 XML.appendChild() 메소드를 사용하면 되는데, 공식적으로 속성(attribute)을 추가하는 메소드는 없습니다.

그래서 구글로 검색해 보니, 다음과 같은 방법으로 간단히 속성을 추가할 수가 있네요.

var xml:XML = new XML(<root />);
xml.@newAtrb = "value";
trace(xml.toXMLString());
// output: <root newAtrb="value"/>
 

이전에 만들던 종스크롤 게임에 캐릭터가 이동하고, 벽과 충돌 테스트를 하도록 기능 추가했습니다.

 

종스크롤 게임을 만들어 보는 중입니다. 캐릭터가 8방향으로 회전하면서 총을 쏘는 부분 까지만 구현된 상태. 총의 위치가 중앙에 있지 않다보니, 총구의 위치에서 총알이 나가도록 별도로 계산을 해 주어야 하는 게 관건이네요.

© 2011 Hangun's World - Blog Suffusion theme by Sayontan Sinha