在hitWall函数中,当玩家遇到墙壁时,hitTestObject正在工作。我在闪光舞台上有墙,名为墙,墙2,墙3,墙4。使用相同的概念,我放置了其他动画片段(树)并将它们命名为:tree1,tree2等....等等...
我收到一条错误消息:访问未定义的属性树。
wall.addEventListener(Event.ENTER_FRAME, hitWall);
tree.addEventListener(Event.ENTER_FRAME, hitTree);
// function hitWall --------------------------------------------------------------
function hitWall(event:Event):void {
if (player_ary[me].hitTestObject(wall)) {
player_ary[me].y+=6;
} else if (player_ary[me].hitTestObject(wall2)) {
player_ary[me].y-=6;
} else if (player_ary[me].hitTestObject(wall3)) {
player_ary[me].x+=6;
} else if (player_ary[me].hitTestObject(wall4)) {
player_ary[me].x-=6;
}
}
// function hitWall --------------------------------------------------------------
function hitTree(event:Event):void {
if (player_ary[me].hitTestObject(tree)) {
player_ary[me].y+=6;
} else if (player_ary[me].hitTestObject(tree2)) {
player_ary[me].y-=6;
} else if (player_ary[me].hitTestObject(tree3)) {
player_ary[me].x+=6;
}
}
答案 0 :(得分:1)
错误表明树MovieClip为空,因此问题不在于代码的这一部分。
如果树MovieClip是添加到舞台的树的实例,请确保在调用方法之前该实例存在。
答案 1 :(得分:0)
如果问题是我认为的那样......
问题是当你有一个类或一个像这样定义的函数时......{
var wall:Object = {name:"dodo"};
wall.addEventListener(Event.ENTER_FRAME,doThis)
function doThis(event:Event):void{
trace (wall.name);
}
}
墙实际上是一个空的。 整个函数在您定义它的函数的上下文之外调用。
您需要做的是测试e.target(它将返回wall对象,因为这是您添加事件侦听器的位置)或添加另一个事件侦听器,并使用类变量(即public var a :INT)
这是人们从as2切换到as3的常见问题