0

我有个问题。我已经能够使用 as3isolib 库 (IsoSprites) 成功运行我的游戏,但是当我在互联网上搜索时,IsoSprites 没有 hitTestObject 或 hitTextPoint 功能。所以,我将 IsoSprites 更改为 Sprite,但是当我已经将 IsoSprites 更改为 Sprite 时,我收到此错误:

1119:通过静态类型 flash.display:Sprite 的引用访问可能未定义的属性 sprite。

它指出:

常量.dudeEfis.sprites = [efisFrontClass];

dudeEfis 是雪碧

我知道雪碧没有以下功能:

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];
}

任何帮助将不胜感激!先感谢您!

4

1 回答 1

0

听起来你已经知道问题所在了。解决此问题的一种方法是创建自己的类来扩展IsoSprite该类,然后自己添加hitTestObjecthitTestPoint方法,它们很容易实现。

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在拥有所需的这两种方法的同时保留所有功能。

于 2013-11-07T14:18:38.587 回答