欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

AS3小知识备忘--积少成多,置顶更新

程序员文章站 2022-07-05 11:09:47
...

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.html

3.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,mouseX
localX和stageX是MouseEvent的属性,mouseX是DisplayObject的属性.localX是鼠标点击的可视对象的内部坐标;mouseX则不需要鼠标单击,只需鼠标移动,移到哪个可视对象的哪个位置,就得到哪个可视对象的内部坐标。如果MC里没有子显示对象时,locaX与mouseX是相等的,如果有子显示对象时,鼠标移动到子显示对象上时,localX就会是子显示对象的mouseX.