运行并按下按钮时,在OUTPUT选项卡中会弹出此错误:TypeError:错误#1006:removeListener不是函数

时间:2012-02-24 18:01:43

标签: flash actionscript-3 flash-cs4

按下OUTPUT选项卡中出现错误的按钮

该文件位于链接

Error #1006.rar

这是navigation_actions代码,其中是导航栏的代码(按钮)

var buttonArray:Array = new Array( );
var currentButton:Object = new Object;

var navContainer:Sprite=new Sprite  ;
addChild(navContainer);

var navArray:Array=["من نحن","المحتوى","المراجع","التواصل", "خريطة الموقع"];

for (var i:Number=0; i<5; i++) {

var navItem:NavItem = new NavItem;
navItem.x = navItem.width*i;
navItem.nav_name.text = navArray[i];
buttonArray.push(navItem);
navItem.addListeners();
navContainer.addChild(navItem);

navItem.name = String(i);

navItem.addEventListener(MouseEvent.CLICK, onNavClick);
}

function onNavClick(evt:MouseEvent):void {

currentButton.y = 0;
currentButton.addListeners();
currentButton.addEventListener(MouseEvent.CLICK, onNavClick);

currentButton = evt.target;
currentButton.removeListeners();
currentButton.removeEventListener(MouseEvent.CLICK, onNavClick);

}

initialNavigation();

function initialNavigation():void {

buttonArray[0].y = -10;
currentButton = buttonArray[0];
currentButton.removeListeners();
currentButton.removeEventListener(MouseEvent.CLICK, onNavClick);
}

var navSide:NavSide = new NavSide;
navSide.x = navContainer.width;
navSide.width = stage.stageWidth - navContainer.width;
navSide.alpha = 0.7;
navContainer.addChild(navSide);

navContainer.y = stage.stageHeight-67; }

这是navItem动作(它自己的按钮)

import com.greensock.TweenLite;

nav_name.autoSize=TextFieldAutoSize.LEFT;
nav_name.selectable=false;

nav_name.x=170-nav_name.width+25;


function onOver(evt:MouseEvent):void {

TweenLite.to(this, 0.4, { y:-10});
}

function onOut(evt:MouseEvent):void {

TweenLite.to(this, 0.4, { y:0});
}

function addListeners():void {

this.addEventListener(MouseEvent.ROLL_OVER, onOver);
this.addEventListener(MouseEvent.ROLL_OUT, onOut);
}

function removeListeners():void {

this.removeEventListener(MouseEvent.ROLL_OVER, onOver);
this.removeEventListener(MouseEvent.ROLL_OUT, onOut);

}

1 个答案:

答案 0 :(得分:0)

我下载了你的文件,我可以告诉你为你的NavItem实例添加了一个监听器,但实际的事件来自它的孩子。这就是event.target不等于NavItem的原因。

使用event.currentTarget或添加navItem.mouseChildren = false;,以便NavItem的孩子不会抓住点击次数。

下次请发贴代码。