2011-04-11 71 views
0

我正在嘗試將位圖加載到舞臺上,然後在完全使用AS代碼時補間它。下面的工作,但是當它添加一個新的位圖圖像的階段,它離開最後一個,從而留下一個相同的位圖的負載。基本ActionScript 3 sprite補間

任何想法?我嘗試添加「removeChild(myLoader);」但那沒有做什麼。非常感謝。

import flash.display.MovieClip; 
import flash.events.*; 

stage.frameRate = 31; 
var a =0; 

btn111.addEventListener(MouseEvent.CLICK, go); 

function go(event:MouseEvent):void 
{ 
    this.addEventListener(Event.ENTER_FRAME, drawrect); 

    function drawrect(evt:Event) 
    { 
     // Create a new instance of the Loader class to work with 
     var myLoader:Loader=new Loader(); 

     // Create a new URLRequest object specifying the location of the external image file 
     var myRequest:URLRequest=new URLRequest("logo.png"); 

     // Call the load method and load the external file with URLRequest object as the parameter 
     myLoader.load(myRequest); 

     // Add the Loader instance to the display list using the addChild() method 
     addChild(myLoader); 

     // Position image 
     myLoader.x = 100; 
     myLoader.y = a++; 

     if(a > 50) 
     { 
      //removeChild(box); 
      removeEventListener(Event.ENTER_FRAME, drawrect); 
     } 
    } 
} 

回答

0

您的問題是,每一幀上,你實際上是添加新的子顯示列表 - 你實際上並沒有移動一個對象,但在不同的位置加載多個對象。你需要將你的loader加載到另一個不能每幀運行的函數中,或者你需要將它封裝在一個if塊中,檢查它是否存在。

試試這個。

import flash.display.MovieClip; 
import flash.events.*; 

stage.frameRate = 31; 
var a =0; 

private var myLoader:Loader; 

btn111.addEventListener(MouseEvent.CLICK, go); 

function go(event:MouseEvent):void 
{ 
    this.addEventListener(Event.ENTER_FRAME, drawrect); 

    function drawrect(evt:Event) 
    { 
     if (myLoader == NULL) 
     { 
      // Create a new instance of the Loader class to work with 
      myLoader:Loader=new Loader(); 

      // Create a new URLRequest object specifying the location of the external image file 
      var myRequest:URLRequest=new URLRequest("logo.png"); 

      // Call the load method and load the external file with URLRequest object as the parameter 
      myLoader.load(myRequest); 

      // Add the Loader instance to the display list using the addChild() method 
      addChild(myLoader); 
     } 

     // Position image 
     myLoader.x = 100; 
     myLoader.y = a++; 

     if(a > 50) 
     { 
      //removeChild(box); 
      removeEventListener(Event.ENTER_FRAME, drawrect); 
     } 
    } 
} 

此外,我會建議對函數的函數內(除非你真的知道你希望它是這樣.....但你可能不希望它是這樣)。

祝你好運。