本文意图通过制作一个简单的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。
在组件面板中输入牌的名字可能无法直接更新在场影中,以后再有时间的话再告诉大家怎么做到这一点。 
|