我想学习过Class的朋友都会遇到一些范围方面的限制,例如在Class当中使用onKeyDown等事件无法调用别的函数,几乎很多网页也都只是单纯的解说方法而没有提到这点。在这里就教大家一个小技巧突破这个范围
class testing { function testing() { trace(this); //在这里的this是指testing本身 var myKey:Object = new Object(); myKey.onKeyDown = function() { trace(this); //这里的this是指myKey echo ("突破范围限制"); //当然你也可以使用_root.test.echo(), 但是这样的代码就无法灵活的应用在其他地方了 } Key.addListener(myKey); } private function echo(str:String) { trace(str); } } ---------------------- FLA --------------------------- var test:testing = new testing(); 解决方法很简单, 如下: class testing { function testing() { var root:Object = this; var myKey:Object = new Object(); myKey.onKeyDown = function() { root.echo ("突破范围限制"); } Key.addListener(myKey); } private function echo(str:String) { trace(str); } }
测试之后是否出来了呢 ^_^ |