10,606
社区成员
发帖
与我相关
我的任务
分享
var a;
function test(i){
a = arguments.callee;
document.write(i);
}
test("10");
a("20");
如上,a本身存放函数test对象,所以可以直接调用,但注意,没有运行第一次的test("10")的话,就调用a("20")是无显示内容的,因为a此时还未被赋值test函数对象。
所以如上,AS中其实也可以用callee来实现,并且基本和JS中没有区别,基本实例代码如下
---- ActionScript ----
Main.as
package {
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.events.Event;
public class Main extends Sprite{
public var sp:Sprite = new Sprite();
public var sg:Boolean = false; //用于记录当前是否在旋转
public var okf:Function; //用于存放需要被remove的函数对象
public function Main() {
// 构建一个矩形sprite
sp.graphics.lineStyle(1,0x000000);
sp.graphics.beginFill(0xffeeee);
sp.graphics.drawRect(-50,-30,100,60);
sp.graphics.endFill();
addChild(sp);
sp.x = 200;
sp.y = 150;
//为这个对象绑定click事件
sp.addEventListener(MouseEvent.CLICK, goClick);
}
private function goClick(e:MouseEvent){
if (sg == true){
sg = false;
this.removeEventListener(Event.ENTER_FRAME, okf);
}else{
sg = true;
var per:int = Math.ceil(Math.random()*10);
this.addEventListener(Event.ENTER_FRAME, function(e:Event){ goClick2(e, per, arguments.callee);});
}
}
private function goClick2(e:Event, per:int, callee:Function){
sp.rotation += per;
okf = callee;
}
}
}