[英]embedding a Movieclip with flashDevelop
我正在嘗試將movieClip嵌入flashDevelop,但顯然無法正常工作,因為它無法識別其中的動畫片段。 這是我的代碼
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.
portrait是我在信息框影片剪輯中擁有的影片剪輯。 它已經在舞台上了,我給它起了肖像的實例名稱。 它可以在Flash中工作,但現在不能在flashDevelop中工作
嘗試按名稱訪問孩子。 它應該工作。
(getChildByName("portrait") as MovieClip).gotoAndStop(portNum[0]);
您需要在類上定義相應的屬性。 在這種情況下,您可以添加:
public var portrait:MovieClip;
如果是其他類型,例如Sprite
,則可以將其更改為該類型。
編輯:如果您在設置Flash Develop時遇到問題,我在那寫了一些教程
[嵌入(source ='.. / .. / .. / lib / fighter.swf',symbol ='InfoBox')]
我會說使用SWC而不是SWF,這將使****加載更加容易。
SWC將所有內容保留在適當的位置,而swf可以刪除不用於節省空間的資產。
同樣在Flash開發面板中,您將看到swc(如swf)並看到其中包含的所有類。 只需右鍵單擊它並將其添加到庫中。 您無需使用[embed]代碼。
除非您絕對需要瑞士法郎,否則請先嘗試一下。
要創建SWC,請使用發布設置下的Flash標簽。
您可以為MovieClip添加鏈接名稱,並將其導出為SWC,假設名為“ mymc”,然后將SWC文件復制到FD項目。 在您的代碼中,只需addChild(new mymc());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.