본문 바로가기

OM

외부에서 load된 swf가 MouseEvent를 가릴때



버튼 Rollover, RollOut, Release
App.as==============================================================================================

package
{
 import flash.display.*;
 import flash.events.*;
 import flash.net.*;
 import flash.text.*;
 
 public class App extends Sprite
 {  
  public function App()
  {   
   state_txt.text = "Button test";
   
   sample_btn.addEventListener(MouseEvent.ROLL_OVER, onRollOverHandler);
   sample_btn.addEventListener(MouseEvent.ROLL_OUT, onRollOutHandler);
   sample_btn.addEventListener(MouseEvent.CLICK, onReleaseHandler);
  }
 
  private function onRollOverHandler(e:MouseEvent):void
  {
   var target:Object = e.target;
   
   target.scaleX = 1.10;
   target.scaleY = 1.10;
   
   state_txt.text = "Button rollOver";
  }
 
  private function onRollOutHandler(e:MouseEvent):void
  {
   var target:Object = e.target;
   
   target.scaleX = 1.00;
   target.scaleY = 1.00;
   
   state_txt.text = "Button rollOut";
  }
 
  private function onReleaseHandler(e:MouseEvent):void
  {
   state_txt.text = "Button release";
  }
 }
}

=====================================================================================================



외부 swf를 load 해 왔을때 버튼 RollOver, RollOut, Release :
load된 swf에 가려(?) 반응하지 않는다. (load된 swf의 사이즈는 가리지(?) 않는다.)
App.as==============================================================================================

package
{
 import flash.display.*;
 import flash.events.*;
 import flash.net.*;
 import flash.text.*;
 
 public class App extends Sprite
 {  
  private var _loader:Loader;
 
  public function App()
  {   
   state_txt.text = "Button test";
   
   sample_btn.addEventListener(MouseEvent.ROLL_OVER, onRollOverHandler);
   sample_btn.addEventListener(MouseEvent.ROLL_OUT, onRollOutHandler);
   sample_btn.addEventListener(MouseEvent.CLICK, onReleaseHandler);
   
   loadSwf();
  }
 
  private function loadSwf():void
  {   
   _loader = new Loader();
   _loader.load(new URLRequest("Loaded.swf"));  
   this.addChild(_loader);
  }
 
  private function onRollOverHandler(e:MouseEvent):void
  {
   var target:Object = e.target;
   
   target.scaleX = 1.10;
   target.scaleY = 1.10;
   
   state_txt.text = "Button rollOver";
  }
 
  private function onRollOutHandler(e:MouseEvent):void
  {
   var target:Object = e.target;
   
   target.scaleX = 1.00;
   target.scaleY = 1.00;
   
   state_txt.text = "Button rollOut";
  }
 
  private function onReleaseHandler(e:MouseEvent):void
  {
   state_txt.text = "Button release";
  }
 }
}

=====================================================================================================


Shape를 생성, 외부에서 load된 swf에 mask를 씌워준다. 버튼 RollOver, RollOut, Release :
이상없이 반응한다.
App.as==============================================================================================

package
{
 import flash.display.*;
 import flash.events.*;
 import flash.net.*;
 import flash.text.*;
 
 public class App extends Sprite
 {
  private var _loader:Loader;
 
  public function App()
  {   
   state_txt.text = "Button test";
   
   sample_btn.addEventListener(MouseEvent.ROLL_OVER, onRollOverHandler);
   sample_btn.addEventListener(MouseEvent.ROLL_OUT, onRollOutHandler);
   sample_btn.addEventListener(MouseEvent.CLICK, onReleaseHandler);
   
   loadSwf();
  }
 
  private function loadSwf():void
  {   
   _loader = new Loader();
   _loader.load(new URLRequest("Loaded.swf"));  
   this.addChild(_loader);
   
   var rect:Shape = new Shape();
   rect.graphics.beginFill(0xFFFFFF);
   rect.graphics.drawRect(0, 0, 550, 100);
   rect.graphics.endFill();
   this.addChild(rect);
   
   _loader.mask = rect;
  }
 
  private function onRollOverHandler(e:MouseEvent):void
  {
   var target:Object = e.target;
   
   target.scaleX = 1.10;
   target.scaleY = 1.10;
   
   state_txt.text = "Button rollOver";
  }
 
  private function onRollOutHandler(e:MouseEvent):void
  {
   var target:Object = e.target;
   
   target.scaleX = 1.00;
   target.scaleY = 1.00;
   
   state_txt.text = "Button rollOut";
  }
 
  private function onReleaseHandler(e:MouseEvent):void
  {
   state_txt.text = "Button release";
  }
 }
}

=====================================================================================================

** 참고 : flash.display.Loader (Flex™ 2 레퍼런스 가이드)


'OM' 카테고리의 다른 글

외부에서 load된 swf 메소드 호출하기  (0) 2008.06.25
마우스를 따라 다니는 원  (0) 2008.06.03
에어 배포 (badge.swf)  (0) 2008.06.03
에어 디스크립터 파일  (0) 2008.06.03
캐릭터 이동  (2) 2008.05.11
Yahoo WebAPI를 이용한 날씨 위젯 2  (0) 2008.05.11
Yahoo WebAPI를 이용한 날씨 위젯 1  (1) 2008.05.10
Flash Javascript 연동 (ExternalInterface)  (0) 2008.05.07
애니메이션  (0) 2008.05.07