如何声明类型 x 和接口 y 的变量?

发布于 2024-11-09 03:04:02 字数 237 浏览 0 评论 0原文

例如,如果我有一个扩展 Sprite 并实现 Mungable 的对象,我想做类似的事情:-

var foo:Sprite <mungable>

这样我就可以做类似的事情:

addChild(foo);
foo.munge();

这在 Actionscript 3 中可能吗?

eg, if i have an Object that extends Sprite and Implements Mungable i would like to do something like:-

var foo:Sprite <mungable>

so that i can do something like:

addChild(foo);
foo.munge();

Is this possible in Actionscript 3?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

蓝海 2024-11-16 03:04:02

不直接。正如其他人所建议的,您可以创建一个类型,例如 MungableSprite,它扩展 Sprite 并实现 Mungable,然后引用该类型。但是,您只能将其用于对象,其类型是 MungableSprite 的子类型。

但你不能简单地传达类型关系“一个对象,它是 Mungeable 和 Sprite”。

Not directly. As others suggested, you can create a type, say MungableSprite, that extends Sprite and implements Mungable and then refer to that type. However you will only be able to use this for objects, who's type is a subtype of MungableSprite.

But you cannot simply convey the type relationship "an object, which is Mungeable and a Sprite".

始终不够爱げ你 2024-11-16 03:04:02

当然是。

在 AS3 中,不能有多重继承,但接口很常见。

对于您的界面,创建一个名为 IMungable.as 的动作脚本文件

package
{
    public interface IMungable
    {
        function munge():void;
    }
}

对于您的自定义精灵,创建一个名为 MyFoo.as 的动作脚本文件

package
{
    import flash.display.Sprite;

    public class MyFoo extends Sprite implements IMungable
    {
        public function MyFoo()
        {
            super();
        }

        public function munge():void{
            trace("munging");
        }
    }
}

然后在其他任何地方,只需创建一个新实例并调用的方法。

            var foo:Sprite = new MyFoo();
            addChild(foo);
            IMungable(foo).munge();

干杯

Of course it is.

In AS3 you cannot have multiple inheritance but Interfaces are quite common.

For your interface, create an actionscript file called IMungable.as

package
{
    public interface IMungable
    {
        function munge():void;
    }
}

For your custom sprite, create an actionscript file called MyFoo.as

package
{
    import flash.display.Sprite;

    public class MyFoo extends Sprite implements IMungable
    {
        public function MyFoo()
        {
            super();
        }

        public function munge():void{
            trace("munging");
        }
    }
}

Then anywhere else, just create a new instance and call the method.

            var foo:Sprite = new MyFoo();
            addChild(foo);
            IMungable(foo).munge();

Cheers

微凉徒眸意 2024-11-16 03:04:02

当然。您只需将变量转换为接口即可。

public class MySprite extends Sprite implements IMungable {
    public function munge() : void {
        // this is the interface function to implement
    }
}

var foo:Sprite = new MySprite() as Sprite;
IMungable(foo).munge();

您还可以转换为 MySprite 来调用 munge()

Sure. You can simply cast your variable to the interface.

public class MySprite extends Sprite implements IMungable {
    public function munge() : void {
        // this is the interface function to implement
    }
}

var foo:Sprite = new MySprite() as Sprite;
IMungable(foo).munge();

You may also cast to MySprite to call munge().

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文