2011-01-11 4 views
0

のサイズを強制、Spritewidth/heightプロパティを設定することのみに基づいて、Flashによって計算され、実際サイズをスケーリングすることにより、与えられた寸法に合うようにSpriteを強制的にレンダリングされたコンテンツ。私が最近見つけてきたように、複雑なFlashオブジェクト

これは私を混乱させます。 Graphicsを使用して描画するカスタムSpriteサブクラスがある場合、初期レンダリングの前にレイアウトを行うにはどうすればよいですか?サイズは最初に描画されるまでゼロになりますか?

より複雑な問題については、ワールド座標が(0,0)から(5000,5000)の広い領域にオブジェクトが広がった2Dゲームの世界があるとしましょう。各オブジェクトのサイズは多分上に〜100x100。 "ゲームウィンドウ"であるFlashコンポーネントを手に入れたいと思っています。ゲームの世界の一部をレンダリングする400x300のような固定サイズを持っています。では、ゲームのウィンドウサイズを400x300ピクセルにするにはどうすればいいですか?サイズを正しく取得するために400x300の四角形を描くことができますが、部分的に表示されているオブジェクトを描画すると、これをねじ込むことができます。

width & heightセッターではなく、カスタムsetSize(w,h)メソッドを使用する正しい方法はありますか?しかし、それでも、作る方法はありませんSprite力は私が欲しいサイズにを強制しますか?あなたは本当にすべてのレンダリングをキャッチして、それを再スケーリングする必要がありますか?

+0

スプライトに透明な(または背景色の)矩形を描くことができます。サイズを指定します。 – alxx

答えて

2

あなたのゲーム世界はあなたのウィンドウの子オブジェクトで、そのサイズは常に5000x5000ですが、ウィンドウ自体を参照するにはウィンドウのwidthheightが必要ですか? 、

private var _width: Number = 400; 
private var _height : Number = 300; 
private var _mask : Sprite; 

// some code in between 

override public function get width() : Number { 
    return _width; 
} 

override public function get height() : Number { 
    return _height; 
} 

override public function set width (wid:Number) : void { 
    _width = wid; 
    if(_mask != null) _mask.width = wid; 
} 

override public function set height (hei : Number) : void { 
    _height = hei; 
    if (_mask != null) _mask.height = hei; 
} 
+0

:AS3コード経由http://www.adobe.com/support/flash/drawing/creating_masks/creating_masks02.html :IDE経由 –

+0

そのメソッドがオーバーライドしている元のメソッドと同じマナーで機能している限り、優れた方法です。標準的な方法からの驚くべき結果を得ることは、あなたを困惑させ、他の開発者に混乱させる可能性があります。 – Glycerine

+0

好奇心の渦中に、scaleXとscaleYをオーバーライドして1.0にロックする必要がありますか? – mpdonadio

2

私の意見では、マスクを使用することをお勧めします。すべてのゲームのDisplayObjectが追加されたゲームコンテナが1つあります。そのコンテナの上には、ゲームコンテナの周りに素敵なユーザーインターフェイスがあり、中央にマスクがあります。そうすれば、ゲームコンテナはマスクの境界内にのみ描画されます。

+0

リンクがありますか?私は前にマスクを見つけたことはありません。 http://www.republicofcode.com/tutorials/flash/as3masking/ –

+0

本質的には、はい。これは固定400x300の 'ウィンドウ'を示すための一例に過ぎません。 'width' /' height'をオーバーライドするのは良い方法ですか?私はそれを考えましたが、何とか間違っているかもしれないと心配していました。 – raRaRa

0

サイズを強制的に別のオプションを使用すると、幅/高さを持つようにしたいものの内側に新しいスプライトを作成することです置く:他のコメントが示唆するように、その後、widthheightゲッターとセッターをオーバーライドし、マスクを使用しますそれらの四隅で。これをコードやオーサリング環境で簡単に行うことができます。

関連する問題