0

独自のクラスを持つ Tile という MovieClip があります。グリッドを作成する for ループに以下のコードがあります。

var tile:MovieClip = new Tile();
tile.gotoAndStop(Floor1[i][u]+1);
tile.x = ((u-i)*tileh)+365;
tile.y = ((u+i)*tileh/2)+70;
addChild(tile);

tile.addEventListener(MouseEvent.ROLL_OVER, mouseover);

現在、Tile には Outline という別のムーブクリップがあります。クラスではありません。私がやりたいことは、マウスで tile 変数をロールオーバーしたときに Outline ムービークリップがフレームに移動するようにすることです。

以下は、マウスイベントの関数です。event.currentTarget.Outline.gotoAndStop(3) を試しましたが、うまくいかないようです。参照エラー #1069: Property Outline not found on Tile が表示され、デフォルト値がありません。

function mouseover(event:MouseEvent)
        {
            event.currentTarget.Outline.gotoAndStop(3);
        }
4

1 に答える 1

1

(すべての変数はOutline小文字、キャメルケースである必要があります。大文字はクラス名であることを意味します)はパブリック変数ですか?次のように、アウトラインをグローバル スコープで宣言する必要があります。

package com.blah.blah
{
    public class Tile extends DisplayObjectContainer {

        public var outline:DisplayObject;

        public function Tile() {
            // instantiate outline here
        }
    }
}

アクセス修飾子の基本的な説明:

  • Public : どのクラスからでもアクセス可能
  • Private : 宣言されているクラスからのみアクセスできます
  • 内部: 同じパッケージ内のクラスのみがアクセスできます
  • Static : インスタンスは 1 つだけ存在し、クラス スコープ (Class.function()) を介してのみアクセスできます。
  • Protected : そのクラスを拡張するクラスのみがそのオブジェクトにアクセスできます
  • Final : 子供は関数をオーバーライドできません
于 2013-04-12T16:46:08.127 に答える