1

これを調べてみましたが、以下で上記のエラーが発生する理由がわかりません。一番近いのはここでした:奇妙なエラー 1006: %function_name% は関数ではありませんが、以下はメイン タイムラインのフレーム 1 にあるため、実際には適用されません。代わりに「Main.as」クラスに移動する必要がありますか?

function centerContent(refItem:Object, xOffset:int, yOffset:int) {
    this.x = (refItem.width - this.width)/2 + refItem.x + xOffset;
    this.y = (refItem.height - this.height)/2 + refItem.y + yOffset;
}

// center the item in relation to another item
a_mc.centerContent(another_mc, 0, 0);
4

2 に答える 2

2

MovieClip で関数のプロトタイプを作成しようとしています。

この関数を MovieClip に追加するには、MovieClip クラスを拡張します。

package
{
    import flash.display.DisplayObject;
    import flash.display.MovieClip;

    public class Example extends MovieClip
    {
        public function Example()
        {
            super();
        }

        public function centerContent(refItem:DisplayObject, xOffset:int, yOffset:int):void
        {
            this.x = (refItem.width - this.width) / 2 + refItem.x + xOffset;
            this.y = (refItem.height - this.height) / 2 + refItem.y + yOffset;
        }

    }
}

centerContent次に、関数を呼び出すことができます。

var a_mc:Example = new Example();
a_mc.centerContent(obj, 0, 0);

DisplayObjectそれ以外の場合は、次のように関数にany を渡すことができます。

public function centerContent(object:DisplayObject, refItem:DisplayObject, xOffset:int, yOffset:int):void
{
    object.x = (refItem.width - object.width) / 2 + refItem.x + xOffset;
    object.y = (refItem.height - object.height) / 2 + refItem.y + yOffset;
}

次に呼び出すことができるもの:

centerContent(a_mc, obj, 0, 0);
于 2013-03-28T19:41:39.593 に答える
1

スコープの仕組みについて混乱しています。

基本的にcenterContent、クラスの一部であり、そのクラスの子から呼び出そうとしています。そのようには機能しません。関数を呼び出すには、その子であるクラスから呼び出す必要があります (関数は、MovieClip、Sprite、または String と同じようにオブジェクトです)。

したがって、次のように見てください。

-Main
--Class1
---another_mc
---a_mc
----function1
----function2
---centerContent()
----refItem
----xOffset
----yOffset

親からオブジェクトを呼び出すことができます (関数もオブジェクトです)。したがって、そのイメージでは、a_mc から function1 と function2 ( a_mc.function1()and a_mc.function2()) を呼び出すことができますが、centerContent ( a_mc.centerContent) は呼び出すことができません。これは、a_mc 内ではなく Class1 内に存在するためです。したがって、 (適切な構文とスコープにClass1.centerContent()使用する) を呼び出すことはできますが、a_mc.centerContent() を呼び出すことはできません。this.centerContent()Class1.a_mc

于 2013-03-28T19:34:23.020 に答える