2010-02-07 30 views
0

我想用flashDevelop嵌入movieClip,但顯然它不工作,因爲它不識別其中的movieclip。這裏是我的代碼用flashDevelop嵌入MovieClip

package com.objects{ 

    import flash.display.MovieClip 
    import flash.text.TextField; 
    import flash.events.*; 
    import flash.text.TextFormat; 

    [Embed(source='../../../lib/fighter.swf', symbol='InfoBox')] 
    public class InfoBox extends gameObject { 

     protected var textf:TextField; 
     protected var s:String; 
     public var type:Boolean = false; 
     private var letter:Number = 0; 
     private var string:Array; 
     private var line:Number = 0; 
     private var portNum:Array; 


     public function InfoBox():void 
     { 
      portNum = new Array(); 
      portrait.stop(); 
      x = 400; 
      y = 550; 

      string = new Array(); 
      var format = new TextFormat(); 
      format.size = 18; 
      textf = new TextField(); 
      textf.width = 550; 
      textf.height = 85; 
      textf.x = -220; 
      textf.y = -60; 
      textf.wordWrap = true; 
      textf.defaultTextFormat = format; 
      addChild(textf); 
      contButton.addEventListener(MouseEvent.MOUSE_DOWN, StoryNext); 
     } 

     private function StoryNext(e:MouseEvent):void 
     { 
      if(string.length > 1) 
      { 
       portNum.splice(0,1); 
       string.splice(0,1); 
       trace(string.length); 
       letter = 0; 
      } 
      else 
      { 
       contButton.removeEventListener(MouseEvent.MOUSE_DOWN, StoryNext); 
       dispatchEvent(new Event("StoryContinue")); 
      } 
     } 

     public function textInfo(msg:String,num:Number = 1):void 
     { 
      string.push(msg); 
      portNum.push(num); 
     } 

     override public function updateObject():void 
     { 
      TypeWords(); 

     }// End UpdateObject 

     public function TypeWords():void 
     { 
      if(type) 
      { 
       portrait.gotoAndStop(portNum[0]); 
       var s:String = string[0];    
       if(letter <= s.length) 
       { 
        textf.text = s.substring(0,letter); 
       }    
       letter++ 
      } 
     } 
    } 
} 

,我得到這個錯誤

C:\Users\numerical25\Documents\RealGames\FighterPilot\beta1FlashDev\src\com\objects\InfoBox.as(23): col: 4 Error: Access of undefined property portrait. 

肖像是,我有信息框影片剪輯內的影片剪輯。它已經在舞臺上,我給它一個肖像的實例名稱。它在flash中工作,但現在它不在flashDevelop

回答

1

您需要在您的類上定義相應的屬性。在這種情況下,您可以添加:

public var portrait:MovieClip; 

如果是一些其他類型,例如一個Sprite您可以更改定義了這一點。

編輯:如果你在該

+0

好的,如果我不能從我的flash開發項目的符號中看到InfoBox。我一直試圖通宵達到一些符號顯示,他們不會 – numerical25 2010-02-07 14:48:18

+0

我的Flash開發出了問題。我需要弄明白。我編譯我的應用程序,即使當我在主要 – numerical25 2010-02-07 15:15:11

+0

中添加跟蹤時也沒有任何反應,但如果您沒有獲取跟蹤信息,則需要確保在調試時編譯(它是編譯按鈕旁邊的選擇框),並且您有一個調試閃存播放器,如果你這樣做,你應該在右鍵菜單中有一個調試器選項。 – grapefrukt 2010-02-07 22:28:42

1

[嵌入有麻煩setting up Flash Develop, I wrote some tutorials(源= '../../../LIB/fighter.swf', 符號= '資訊盒') ]

我會說使用SWCs而不是SWFs,它會使它更容易加載。

SWCs保留所有的東西,而瑞士法郎可以刪除不用於節省空間的資產。

同樣在你的Flash開發面板中,你會看到swc(如swf)並查看所有包含的類。只需右鍵單擊它並將其添加到庫。您不必使用[嵌入]代碼。

先試一下,除非你絕對需要swf。

要創建一個swc,請使用發佈設置下的flash選項卡。

2

嘗試按姓名訪問孩子。它應該工作。

(getChildByName("portrait") as MovieClip).gotoAndStop(portNum[0]); 
0

您可以爲影片剪輯添加鏈接名稱,並將其導出爲SWC,假定名爲「mymc」 然後複製SWC文件到你FD項目。 在你的代碼中,只需addChild(new mymc());