早上好
我不知道为什么这不简单!我们走了:
在我的纯Flash CS5 AS3项目中,我需要制作一些按钮。许多不同种类的按钮,它们具有不同的皮肤组。完全不同。
因此,使用Button组件并更改Symbol中的皮肤是不够的,因为这会更改所有按钮。我需要很多不同的。
我们都知道如何重新设置核心Button组件,这样可以改变所有按钮。
有没有人知道如何对Button进行离散自定义,或类似的效果?
干杯
富
答案 0 :(得分:0)
不是100%确定你的意思..如果你需要有多个不同的按钮,为什么你不能在UI中选择对象时使用上下文菜单中的转换为符号功能创建多个按钮?
如果您需要在这些按钮上维护某种类型的功能,那么我建议将所有这些功能封装到具有属性skin:SimpleButton
的类中。你在这里可以做的是有一个皮肤的setter,它可以应用你的事件监听器或类似的东西:
public function set skin(btn:SimpleButton):void
{
btn.addEventListener(MouseEvent.CLICK, _someFunc);
}
您真正需要做的就是为每个不同的按钮创建一些类,指定要在构造函数中使用的外观:
public function SomeButton()
{
skin = new MyLibraryButton();
}
或者即时进行:
var button:MyButton = new MyButton();
button.skin = new MyLibraryButton();
这是你追求的吗?
以上是我在上面描述的更完整的例子:
package
{
import flash.display.SimpleButton;
import flash.events.MouseEvent;
public class MyButton extends Object
{
// Properties
private var _skin:SimpleButton;
/**
* Defines the button skin to use
* @param btn Reference to an instance of SimpleButton
*/
public function set skin(btn:SimpleButton):void
{
_skin = btn;
btn.addEventListener(MouseEvent.CLICK, _click);
}
/**
* Called when the skin (button) has been clicked
* @param e MouseEvent.CLICK
*/
private function _click(e:MouseEvent):void
{
trace("Button was clicked");
}
/**
* Getters
*/
public function get skin():SimpleButton{ return _skin; }
}
}