我正在尝试加载一个包含按钮外观作为图像的swf文件(在swf文件的库中,我已经给出了导出属性'TickMark')并使用StyleManager.setStyleDeclaration设置了一个flex按钮的外观。 / p>
我收到错误,例如'TickMark()上的参数计数不匹配。预计2,得到0。'
这就是我想要做的事情:
private function init():void
{
loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,styleSWFLoaded);
loader.load(new URLRequest("styles.swf"),new LoaderContext(false,ApplicationDomain.currentDomain));
}
private function createStyle(styleName:String):void
{
var style:CSSStyleDeclaration = new CSSStyleDeclaration(styleName);
var cls:Class = ApplicationDomain.currentDomain.getDefinition(ss) as Class;
style.setStyle("upSkin",cls);
}
}
StyleManager.setStyleDeclaration(".buttonme",style,true);
}
当我将这个新样式'buttonme'应用于按钮时,我得到以下错误:
ArgumentError: Error #1063: Argument count mismatch on TickMark(). Expected 2, got 0.
不确定为什么会发生这种情况,奇怪的是,当我嵌入相同的swf文件时,它会起作用,如下所示:
[Embed(source="styles.swf", symbol="Tick")]
private var GraphicClass:Class;
如果我在setStyleDeclaration中使用类GraphicClass,它可以工作......但基本上我想要它动态。
还是有其他简单的方法可以动态设置(图像)弹性按钮吗?
答案 0 :(得分:0)
你应该能够动态地设置你的皮肤。它可能与您的TickMark类有关。我假设您执行style.setStyle("upSkin", cls);
时cls
为TickMark
并且它有两个必需的构造函数args:TickMark(arg1:Object, arg2:Object)
。真的吗?在setStyle方法的某处,它正在执行new cls()
。
如果是这样,只需确保没有构造函数参数,它应该可以工作。
如果没有,请尝试遵循堆栈跟踪并在Flex Builder中使用breakpoints(如果您还没有),这应该有助于查明问题。
最佳, 兰斯
答案 1 :(得分:0)
我相信,当你在flex-app中嵌入导出符号时,它会照顾大小,也许只是直接嵌入png。
当您的符号类扩展BitmapData时,必须通过在构造函数中传递必需的参数来实例化它。所以无论你得到什么错误,都是按设计和工作方式进行的。
您可以将png包装在其他类型的符号(精灵,动画片段等)中并导出。在setStyle(..,..)
中使用时应该可以正常工作