今天群里朋友问,A B C D多个显示对象有同一个NativeMenu菜单,怎么知道是哪个显示对象弹出的菜单?
首先想到的是NativeMenu有Event.DISPLAYING事件,可是具体是哪个显示对象就不好弄了,
然后想,如果只是相同的菜单显示,而用不同的NativeMenu可以用闭包函数实现,O(∩_∩)O~
可是那位朋友说用闭包不适合的,o(╯□╰)o
又有朋友说用ContextMenuEvent.MENU_SELECT试试,我想NativeMenu没有ContextMenuEvent事件的,怎么能用呢。
先试下再说了, 没想到果然ok的,郁闷了,API上说NativeMenu没有ContextMenuEvent事件的啊, 莫非我的API有误?describeType 看下,晕倒,也没ContextMenuEvent事件的。
然后测试NativeWidow.menu,不会触发ContextMenuEvent事件,
然后猜想,可能InteractiveObject的contextMenu会自动添加ContextMenuEvent.MENU_SELET事件。
结论:InteractiveObject的contextMenu会自动添加ContextMenuEvent.MENU_SELET事件,而不管是不是ContextMenu
下面是测试代码:
阅读全文...
重新添加了swf演示.
这是一个textField_restrict的演示demo,如果你看不到这个flash,请到文章页面查看!
阅读全文...
package
{
import flash.display.Sprite;
import flash.system.Capabilities;
/**
* www.litefeel.com
* lite3@qq.com
* @author lite3
*/
public class VectorTest extends Sprite
{
private var list:Vector.<MyClass> = new Vector.<MyClass>();
public function VectorTest()
{
trace(Capabilities.version);
var n:int = 3;
while (n--)
{
//list.length++;
list.unshift(new MyClass());
trace(list);
}
}
}
}
class MyClass{}
输出:
WIN 10,0,22,87
[object MyClass]
[object MyClass],[object MyClass]
[object MyClass],[object MyClass],[object MyClass]
有时,有些模块化的东西,要发送事件,如果当然没人侦听它,它却去发送事件不是有点浪费。
有个折中的办法,感谢 tttt 提醒用 willTrigger,willTrigger才能检测事件流里是否有注册相应事件。
注意:不要乱用,因为当事件流的层次多时,willTrigger消耗的时间是dispatchEvent的一多半!
override public function dispatchEvent(event:Event):void
{
if (willTrigger(event.type))
{
super.dispatchEvent(event);
}
}
函数里可以使用this关键字,可以很方便的引用一个对象。
一般函数的 this 可以通过function.apply或function.call来修改this指向的对象。
不过在作为类的固有方法(类成员方法),则不能改变this对象。
阅读全文...
var xml:XML = new XML( <data>
<user>
<user id="1"/>
<user id="2"/>
</user>
</data> );
var xmlList:XMLList = xml.user.user;
var myXML:XML = new XML(<user id="3"/>);
insertXML(xmlList, myXML);
trace("-------- xmlList -----------");
trace(xmlList);
trace("---------- xml -------------");
trace(xml);
function insertXML(xmlList:XMLList, xml:XML):void
{
// 修改xmlList,建议用这个
xmlList[xmlList.length()] = xml;
// 不修改xmlList
//xmlList.parent().appendChild(xml);
}