本文意图通过制作一个简单的V2组件来说明V2组件的好处。
因前2次都写到一半停电或是死机了,本次已再没有激情去修饰,简单介绍一下编写V2组件扑克牌的过程吧。
一、准备工作
首先你要找好52张牌的图像,大小王我没处理,如果你愿意的话修改就可以了,应该不超过2行。这52张图像导入到Flash MX 2004中,然后打开库窗口,在每一个图像上右击,选择“链接”,勾上“为运行时共享导出”,并在“标识符”文本框中输入一个规范的名字,这个名字命名规则如下:
一张牌的名字由2个字符组成,前一个字符代表花色,分别是S(黑桃)、H(红桃)、C(草花)、D(方块)。第二个字符代表牌值,1代表A,2-9、J、Q、K分别对应扑克中的2-9、J、Q、K,0代表10。
二、编写类
因为本文2次写作过程都遇到意外,本次只简单把代码发上来吧,应该容易看得懂。
import mx.core.UIComponent
class Card extends MovieClip
{
private var _value : String;
[Inspectable(name="Card value", defaultValue="H1")]
function set value (t:String) : Void
{
_value = t;
if (t.length != 2)
{
trace ("Invalid card value: "+t);
}
else if (t.charAt (0) != 'H' && t.charAt (0) != 'C' && //color
t.charAt (0) != 'S' && t.charAt (0) != 'D')
{
trace (Formatter.format ("Invalid card color [%ARG%].", [t]));
this.show = false;
}
else if ((t.charAt (1) == "J" || t.charAt (1) == "Q" || t.charAt (1) == "K") || //value
(t.charAt (1) <= "9" && t.charAt (1) >= "0"))
{
this.attachMovie (t, this._name, this.getDepth ());
}
else
{
trace ("Invalid card value: "+t);
this.show = false;
}
}
[Inspectable(name="Show", defaultValue=true)]
function set show (t:Boolean) : Void
{
if (_error)
t = false;
setProperty (this, _visible, t);
}
function get point () : Number
{
if (_value.charAt (1) >= '0' && _value.charAt (1) <= '9')
return _value.charAt (1) - '0';
return 0;
}
}
三、完成组件
这个步骤很简单了,在Flash MX 2004中添加一个影片剪辑(MovieClip),名称随意,按照我前篇文章里的方法链接到Card类,这个组件就完成了。
四、测试
放置一个组件实例到场景中,命名为card,然后可以通过组件面板或者是脚本去控制,直接给它赋值即可,_root.card.value = “H3“; 即可让它显示出红桃3。
在组件面板中输入牌的名字可能无法直接更新在场影中,以后再有时间的话再告诉大家怎么做到这一点。