我对Flash Professional一无所知,但是朋友给了我一个.swf,据说包含了一些他想要导入Flex程序的图形 - 我对此有所了解。
我有.swf,但我不知道该为“符号”添加什么。我的朋友似乎不知道我在说什么。如何确定要嵌入嵌入的第二个参数的符号名称?
[Embed(source='SomeSwf.swf', symbol='WhatGoesHere??')]
有没有办法浏览.swf,或者某种方式只是导入整个内容并逐步执行actionscript中的符号?
提前致谢。
答案 0 :(得分:3)
您应该将符号的链接名称指定为第二个参数。 要设置链接名称,您的朋友应从“库”面板中选择符号,打开其属性,然后选中“导出for Actionscript”复选框,指定类名(如果需要):
此面板中指定的类名是您应该用于嵌入该对象的第二个参数。发布swf之后,您将能够以这种方式实例化该符号对象:
public class EmbedTest extends Sprite
{
[Embed (source = "square.swf", symbol="Square")]
private var swfAsset:Class;
public function EmbedTest():void
{
var embeddedSwf:*=new swfAsset();
addChild(DisplayObject(embeddedSwf));
}
}
<强> UPD1:强>
有没有办法浏览.swf, 或者某种方式来导入整个 事物和步骤通过符号 动作?
您可以尝试以这种方式逐步浏览嵌入式swf的所有舞台上符号:
package
{
import flash.display.DisplayObject;
import flash.display.Loader;
import flash.display.LoaderInfo;
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.Event;
import flash.utils.getDefinitionByName;
[SWF(backgroundColor="#FFFFFF", width="1000", height="400")]
public class EmbedTest extends Sprite
{
[Embed (source = "yourSwf.swf")]
private var swfAsset:Class;
public function EmbedTest()
{
super();
var embeddedClip:Sprite=new swfAsset() as Sprite;
var loader:Loader=Loader(embeddedClip.getChildAt(0));
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadCompleteFunction);
}
private function loadCompleteFunction(e:Event):void {
var loaderInfo:LoaderInfo=e.target as LoaderInfo;
var content:MovieClip=loaderInfo.loader.content as MovieClip;
for (var i:int=0; i<content.numChildren; i++) {
var embeddedMovieClipChild:*=content.getChildAt(i);
trace (embeddedMovieClipChild.name, embeddedMovieClipChild);
}
}
}
}
<强> UPD2:强> 还要考虑将资产作为swc文件添加到项目中。 http://blog.geewa.com/post/2009/03/16/Integrating-Flash-Professional-and-Flex-Builder-Using-SWC.aspx
答案 1 :(得分:0)
由于flex嵌入数据的方式,您需要在嵌入时知道符号名称。为此,您需要.fla文件。
如果你只有swf,你可以尝试反编译它以获取名称 - 但是它们需要被链接以便导出(因此它们甚至可能没有它们!)。在这种情况下,您可能希望将其吸入闪存然后命名并标记为自己在另一个swf中导出它们。
麻烦。最好的办法是让你的朋友给你swf,或者给你资产的名字或.fla文件。
=)
答案 2 :(得分:0)
您可以尝试浏览FlashDevelop中的swf,其中包含SWF exploration feature。如果使用FlashDevelop中的Project侧面板导航到swf,则可以打开它以查看其中的类,符号和字体的名称。但是你看到的符号只会是那些具有符号名称的符号;如果它未命名,它可能会得到一个有趣的名称,如instance2143,它不会被列出。
答案 3 :(得分:0)
实际上有一种方法可以动态加载可用定义列表。
有一个名为SWFExplorer的类可以让你这样做。
这里解释了一切:http://www.bytearray.org/?p=175
您需要创建一个项目,创建一个名为“SWFReader”的类,该类可以找出您需要的名称列表。