1

私は単純なシンボルを持っています

var button:graphic = new graphic();
    button.x=250;
    button.y=200;
    addChild(button);

これを真ん中にしたい:

var posX:number = stage.width/2
var posY:number = stage.height/2

button.x=posX
button.y=posY

これは私の頭に浮かびました^しかし、実行すると次のエラーが表示されます:

1046: Type was not found or was not a compile-time constant: number. //for pos X
1046: Type was not found or was not a compile-time constant: number. //for pos Y

これが唯一の解決策だと思いますが、残念ながらこれは機能していません。プログラミング全体に慣れていないため、これらの行を間違って書いている可能性があります。

私の解決策を修正してください、または間違っている場合は正しいものを教えてください

4

1 に答える 1

1

あなたの例では、Numberデータ型でケースの問題が発生しています。

同様に、プロパティを参照する必要がstage.stageWidthありstage.stageHeightます。

var posX:Number = stage.stageWidth / 2;
var posY:Number = stage.stageHeight / 2;

次のように、シンボルの幅と高さを補正したい場合があります。

var posX:Number = (stage.stageWidth / 2) - (button.width / 2);
var posY:Number = (stage.stageHeight / 2) - (button.height / 2);

最後に、Event.RESIZEステージ サイズの変更を処理するイベントをリッスンします。

import flash.events.Event;
import flash.display.StageScaleMode;
import flash.display.StageAlign;

stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;

stage.addEventListener(Event.RESIZE, resizeHandler);
stage.dispatchEvent(new Event(Event.RESIZE));

function resizeHandler(event:Event):void
{
    var posX:Number = (stage.stageWidth / 2) - (button.width / 2);
    var posY:Number = (stage.stageHeight / 2) - (button.height / 2);

    button.x = posX;
    button.y = posY;
}

例として、Adobe Flash CS5 FLA ソース コードHTML、およびコンパイル済みSWFを次に示します。

于 2013-09-20T19:02:39.817 に答える