Flash 闪存中出错(1023:不兼容的覆盖。1021:重复的函数定义。)
有人能帮我修复错误吗: (1023:不兼容的覆盖。和1021:重复的函数定义) 我不熟悉Flash和动作脚本3,所以我真的不知道如何解决这个问题 我正在创建一个这样的游戏:Flash 闪存中出错(1023:不兼容的覆盖。1021:重复的函数定义。),flash,actionscript-3,Flash,Actionscript 3,有人能帮我修复错误吗: (1023:不兼容的覆盖。和1021:重复的函数定义) 我不熟悉Flash和动作脚本3,所以我真的不知道如何解决这个问题 我正在创建一个这样的游戏: 如果我按ENTER键,“pamato”应该位于“mouse2”所在的位置。它应该遵循鼠标2的方向。它还必须有摩擦力和速度 这两个错误的来源是函数速度 这是我到目前为止所做的代码 var sb:Number = 0; var friction:Number = 0.0085; var speed:Number = .002;
如果我按ENTER键,“pamato”应该位于“mouse2”所在的位置。它应该遵循鼠标2的方向。它还必须有摩擦力和速度 这两个错误的来源是函数速度 这是我到目前为止所做的代码
var sb:Number = 0;
var friction:Number = 0.0085;
var speed:Number = .002;
var path:Shape = new Shape();
addChild(path);
pamato.addEventListener(MouseEvent.MOUSE_DOWN, t_startDrag);
pamato.addEventListener(MouseEvent.MOUSE_UP, t_stopDrag);
position.addEventListener(MouseEvent.MOUSE_UP, b_position);
mouse.addEventListener(MouseEvent.MOUSE_UP, drawPath);
speedBar.addEventListener(Event.ENTER_FRAME, speed);
pamato.addEventListener(Event.ENTER_FRAME, moving);
// dragging the pamato to its position
function t_startDrag(event:Event):void
{
pamato.startDrag();
}
function t_stopDrag(event:Event):void
{
pamato.stopDrag();
if(pamato.hitTestObject(circle))
{
pamato.x = 605;
pamato.y = 570;
}
}
// position button
function b_position(event:Event):void
{
mouse.addEventListener(Event.ENTER_FRAME, cursor)
{
function cursor(e:Event):void
{
mouse.alpha = 9;
mouse.x = mouseX;
mouse.y = mouseY;
}
}
}
// path && mouse2
function drawPath(event:Event):void
{
mouse2.x = mouse.x;
mouse2.y = mouse.y;
mouse2.alpha = 10;
path.graphics.clear();
path.graphics.lineStyle(1,0xFFFFFF,100);
path.graphics.moveTo(pamato.x, pamato.y);
path.graphics.lineTo(mouse2.x, mouse2.y);
}
// speed bar
function speed(event:Event):void
{
speedBar.scaleX = sb;
stage.addEventListener(KeyboardEvent.KEY_DOWN, myKeyDown)
{
function myKeyDown(e:KeyboardEvent):void
{
if (e.keyCode == Keyboard.SPACE)
{
sb += .0005;
if (sb > 1)
{
sb = 0;
}
}
}
}
}
// moving the pamato
function moving(event:Event):void
{
stage.addEventListener(KeyboardEvent.KEY_DOWN, enterKey)
{
if (e.keyCode == Keyboard.ENTER)
{
var myRadians:Number = Math.atan2(mouse2.y-pamato.y, mouse2.x-pamato.x);
var myDegrees:Number = Math.round((myRadians*180/Math.PI));
var yChange:Number = Math.round(mouse2.y-pamato.y);
var xChange:Number = Math.round(mouse2.y-pamato.y);
var yMove:Number = Math.round(yChange/20);
var xMove:Number = Math.round(xChange/20);
var yspeed:Number = yspeed + yMove;
var xspeed:Number = xspeed + xMove;
removeChild(holder);
mouse2.alpha = 0;
mouse.alpha = 0;
sb = 0;
}
}
xspeed *= friction;
yspeed *= friction;
y += yspeed;
x += xspeed;
}
添加事件侦听器的方式是错误的。调用以下特定函数之一:
function speed(event:Event):void
{
stage.addEventListener(KeyboardEvent.KEY_DOWN, this._onKeyDown );
}
private function _onKeyDown( e:KeyboardEvent ):void
{
// do something
}
function speed( event:Event ):void
{
stage.addEventListener( KeyboardEvent.KEY_DOWN, function( e:KeyboardEvent )
{
// this is the function block for the anon function
// do something
} ); // end of add listener
}
或者像这样的匿名函数:
function speed(event:Event):void
{
stage.addEventListener(KeyboardEvent.KEY_DOWN, this._onKeyDown );
}
private function _onKeyDown( e:KeyboardEvent ):void
{
// do something
}
function speed( event:Event ):void
{
stage.addEventListener( KeyboardEvent.KEY_DOWN, function( e:KeyboardEvent )
{
// this is the function block for the anon function
// do something
} ); // end of add listener
}
在这两个版本中,第一个版本是最好的方法,因为它允许您在使用完事件侦听器后删除它(不删除事件侦听器意味着对象不能被垃圾收集,这意味着内存泄漏)
如果您仍然有问题,您可以发布完整的错误(应该有错误文本和问题所在的行)我有另一个错误(1013:private属性只能用于类属性定义)。下面是我修改的代码://speed bar function speed(event:event):void{speedBar.scaleX=sb;stage.addEventListener(KeyboardEvent.KEY_DOWN,this._onKeyDown)}私有函数_onKeyDown(e:KeyboardEvent):void{if(e.keyCode==Keyboard.SPACE){sb+=0.0005;if(sb>1){sb=0;}}}我想我做错了(另外,你能检查一下函数的移动吗?。因为我认为,这是问题的根源。当我添加该函数时出现了错误…我最初在AS2中制作了该游戏,但当我试图将其转换为AS3时..真是一团糟!当我在AS2中制作该游戏时更容易了…这是代码..
//速度栏函数速度(event:event):void{speedBar.scaleX=sb;stage.addEventListener(KeyboardEvent.KEY\u DOWN,this.\u onKeyDown);}私有函数{u onKeyDown(e:KeyboardEvent):void{if(e.keyCode==Keyboard.SPACE){sb+=0.0005;if(sb>1){sb=0;}}
所有这些代码都在一个类中,还是只是复制到一个.as文件中?如果它在一个类中,您可以使用public
、private
和protected
来控制对变量和函数等的访问。在我给您的示例中,我假设它在一个类中,因此如果它不只是删除private
定义f对于函数moving()
,您再次声明您的addEventListener()
错误。只需遵循与答案相同的语法即可