[英]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.