AS3小知识备忘--积少成多,置顶更新
1.如何让flash.text.TextField可编辑?
不是editable=true或readonly=false...而是type = TextFieldType.INPUT;
参考
type 属性 ??
type:String ?[]?
语言版本 : ?ActionScript 3.0?
RuntimeVersions: ?AIR 1.0, Flash Player 9?
文本字段的类型。以下 TextFieldType 常数中的任一个:TextFieldType.DYNAMIC(指定用户无法编辑的动态文本字段),或 TextFieldType.INPUT(指定用户可以编辑的输入文本字段)。
默认值为 dynamic.
?
如何在文本框里添加超链接?(1)使用文本框的htmlText属性添加必须以"event:"开头的超链接,如<a href='event:geturl|http://***/|_blank'>这儿</a>(2)添加对TextEvent.LINK事件类型的侦听,如addEventListener(TextEvent.LINK,clickLink);(3)"event:"后面的字符串将被包含在侦听事件的text属性里,如private function clickLink(event:TextEvent):void{? ?var cmdArray:Array = event.text.split("|");? ?if(cmdArray[0]=="geturl")? ? ? navigateToURL(new URLRequest(cmdArray[1],cmdArray[2]);}PS:如果一个文本框比较奇怪,比如超链接不出现,或者对鼠标事件不响应,尽快检查一些属性设置,比如mouseEnabled等。2.读取网页FlashVars中的参数
stage.root.loaderInfo.parameters参考http://hi.baidu.com/nscartoon/blog/item/42203c4edb4677ccd1c86aef.html3.flash.net.Socket连接如果出现"Error #2031: Socket 错误。 URL: localhost",也就是无法连接的情况,很可能是机器上IIS未设置。简易的解决办法是下载一个EasyWebServe,设置一下主目录比如“SocketDemo\bin-debug”即可
4.stopPropagation和stopImmediatePropagation肿么回事?都是取消事件流继续传播,不过stopImmediatePropagation会立即停止,即本节点优先级靠后的或者注册时间靠后的,都不执行了。而stopPropagation仍然会执行这些,执行完本节点的侦听后,它们都会有停止事件传播的行为。
5.ByteArray的writeBytes和readBytes总是记不清,有木有byteArray.readBytes(bytes:ByteArray, offset:uint = 0, length:uint = 0):void
从byteArray的byteArray.position开始,读取length个字节放到bytes里,bytes从offset开始放.(bytes的position不变,bytesArray的position增加)
byteArray.writeBytes(bytes:ByteArray, offset:uint = 0, length:uint = 0):void
从bytes的offset开始,读取length个字节放到byteArray里,byteArray从byteArray.position开始放. (bytes的position不变, byteArray的position增加)
总结:?byteArray都是从byteArray.position开始(不论读写), bytes都是从offset开始(不论读写).参考http://lite3.cn/?p=534
6.for...in,for each...in总是记不清,有木有for……in和for each……in的区别在于,for……in的枚举变量代表的是键,必须要通过数据访问符[]加上这个键值,才能访问到集合成员。而for each……in的枚举变量k则直接代表集合的成员。也就是说,当程序需要使用键的信息时,用for……in;只需要访问集合成员时,使用for each……in最方便。在实践中,for each……in使用比for……in多一些。大部分情况下,我们并不需要知道成员的名字(键)。记忆诀窍:大多时候,我们不需要知道键,只是遍历值。所以遍历值用的就是多的那一个,for each in比for in多一个单词。。。。也就是说,长的那个句式更常用一些。
7.将字符串中的双引号改为单引号??str.replace(new RegExp("\"","g"),"'");
8.MouseOver具有冒泡能力,而RollOver没有,这个是两者最直接的区别
9.localToGlobal()和globalToLocal()注意,由于元件的坐标系是自身容器,所以必须用元件的parent来调用
10.localX,stageX,mouseXlocalX和stageX是MouseEvent的属性,mouseX是DisplayObject的属性.localX是鼠标点击的可视对象的内部坐标;mouseX则不需要鼠标单击,只需鼠标移动,移到哪个可视对象的哪个位置,就得到哪个可视对象的内部坐标。如果MC里没有子显示对象时,locaX与mouseX是相等的,如果有子显示对象时,鼠标移动到子显示对象上时,localX就会是子显示对象的mouseX.