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
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开始(不论读写).
从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开始(不论读写).
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.
上一篇: 关于DEGRAFA的简介
下一篇: ubuntu小知识点--常用命令以及操作
推荐阅读