2014-07-03 57 views
0

我是新來的AS3,似乎忽略東西有關的類和/或定位。我在我的圖書館中有一個與名爲'雲'的類相關聯的MovieClip(是的,雲只是一片雨雲的圖片)。我想在舞臺上添加雲。我知道有兩種方法可以做到這一點:添加影片剪輯到階段

  1. 將它直接從庫中拖到舞臺上。
  2. 使用AS3將addChild添加到舞臺。

當我使用「從庫直接拖到舞臺上」方法發佈我的swf時,該類將工作。但是,當我嘗試使用AS3方法時,它不起作用。

類如下:

package { 

    import flash.display.MovieClip; 
    import flash.events.KeyboardEvent; 

    public class cloud extends MovieClip { 

     public function cloud() { 
      stage.addEventListener(KeyboardEvent.KEY_DOWN,keyMapping); 
     } 
     private function keyMapping(event:KeyboardEvent):void { 
      if (event.charCode == 13) { 
       MovieClip(parent).testme.text = "hello world!"; 
      } 
     } 
    } 
} 

我一直在使用我的主時間軸的第1幀AS3:

stop(); 
var cloud_mc:cloud = new cloud(); 
addChild(cloud_mc); 

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

建議的修復

類別:

package { 

    import flash.display.MovieClip; 
    import flash.events.KeyboardEvent; 

    public class cloud extends MovieClip { 

     public function cloud() { 
     } 
     public function tralala() { 
      stage.addEventListener(KeyboardEvent.KEY_DOWN,keyMapping); 
     } 
     private function keyMapping(event:KeyboardEvent):void { 
      if (event.charCode == 13) { 
       MovieClip(parent).testme.text = "hello world!"; 
      } 
     } 
    } 
} 

AS3:

stop(); 
var cloud_mc:cloud = new cloud(); 
addChild(cloud_mc); 
cloud_mc.tralala(); 

回答

1

使用庫對象,而不是它擴展的類的鏈接名稱。

您的庫對象擴展了擴展影片剪輯的雲類。如果你實例化雲類,你會錯過圖書館對象。

該過程在這裏詳細地描述:

http://help.adobe.com/en_US/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b8ea63-7fee.html

+0

鏈路張貼給出了一個詳細說明。一個簡短的版本是:右鍵單擊庫項目,確保勾選了[x]導出動作腳本,然後從「類」字段複製值並使用它代替雲類。 –

+0

謝謝!我想我現在明白了,而且我剛剛修改了我原來的帖子並提供了一個建議的修復方法 - 我們正在談論的是什麼?建議的修復方法確實有效,但我只想確保我正確地/正確地執行此操作。 – Actionman

+0

看起來正確。只需要注意一點:您發佈的代碼對於類和庫鏈接都具有相同的名稱。這是允許的,但可能會導致混淆,如果您有多個庫項目具有不同的鏈接ID,它們都會擴展相同的類。例如,你可以將8個不同的小行星圖形命名爲「asteroid1」到「asteroid8」,它們都擴展了Metroid類。在這種情況下,你需要做「新的metroid1()」而不是「新的Metroid()」。 –