1119:通过a访问可能未定义的属性sprite 带静态类型的引用flash.display:Sprite。
指出:
Constant.dudeEfis.sprites = [efisFrontClass];
dudeEfis是Sprite
我知道Sprite没有以下功能:
dudeEfis.sprites
但问题是,如果我将“dudeEfis”更改为IsoSprite,我将无法获取hitTestObject或hitTestPoint。如果我改为Sprite,我就会收到这个错误。我该如何解决?我给你的代码是移动面方向(当玩家面向南方时,角色也是如此)
以下是代码:
public static var loaderEfis:Loader;
public static var dudeEfis:Sprite; //public static var dudeEfis:IsoSprite;
public static var _numXEfis:Number = 0;
public static var _numYEfis:Number = 0;
Constant.loaderEfis = new Loader();
Constant.loaderEfis.load(new URLRequest("efis.swf"));
var efisFrontClass:Class = Constant.loaderEfis.contentLoaderInfo.applicationDomain.getDefinition("EfisFront") as Class;
if (Constant._numXEfis == 0 && Constant._numYEfis == 0)
{
Constant._numXEfis = Constant.dudeEfis.x;
Constant._numYEfis = Constant.dudeEfis.y;
Constant.dudeEfis.sprites = [efisFrontClass];
}
任何帮助将不胜感激!提前谢谢!
答案 0 :(得分:0)
听起来你已经知道问题所在。解决此问题的一种方法是创建自己的类,扩展IsoSprite
类,然后自己添加hitTestObject
和hitTestPoint
方法,它们很容易实现。
package {
import flash.display.DisplayObject;
import flash.geom.Point;
public class MyOwnSprite extends IsoSprite {
public function hitTestObject (object:DisplayObject):Boolean {
//some logic here
}
public function hitTestPoint (point:Point):Boolean {
//some logic here
}
}
}
通过这种方式,您可以保留IsoSprite
的所有功能,同时拥有您需要的这两种方法。