2012-04-12 12 views
0

私がしたいのは、幅を狭くしたいときに、割り当てられた位置から四角形を移動することに問題があるようです。私が取り組んでいるゲームは、ヒューズで爆発物をシミュレートしています。クロックが0になるとヒューズのサイズは小さくなります。問題はローカル座標とグローバル座標との関係ですが、問題を解決する方法はわかりません。ここではいくつかのコードは次のとおりです。私はその幅各フレームを減らすどこ幅を減らすときにRectがその位置から移動しないようにする方法

//fuse 
_fuse = new Sprite(); 
_fuse.graphics.beginFill(0x000000); 
_fuse.graphics.drawRect(630, 340, (_fuseCounter/_fuseWidth) * 120, 20); 
_fuse.graphics.endFill(); 

そして、ここでは次のようになります。私のコードではどこにも

//decrease fuse to give the player a visual of urgency. 
_fuseCounter--;   
_fuse.width = (_fuseCounter/ _fuseWidth) * 120; 

は、ヒューズ変化のx位置を行います。この1つの問題とは別に、rectは私が望むように正確に機能します。この問題の助けに感謝します。

+1

表示オブジェクトのサイズを変更すると、四角形の登録ポイントに基づいてサイズが変更されます。左から右にサイズを変更したい場合は、グラフィックスの左側に登録ポイントを設定します( 'drawRect()'の3番目の引数に '0 'を入れます)。 – Marty

+0

@Marty Wallaceこれは問題をかなり解決しませんでしたが、スプライトが実際にどのように描かれているかについて非常に重要なことを学びました。ありがとう! – King

答えて

1

あなたの問題は630,340であなたの四角形を描いていて、その周りの幅を縮小していることです。

この

0     100 
----------------------- 
|      | 
|   -----  | 
|   |  |  | 
|   -----  | 
|      | 
|      | 
----------------------- 

のようなそれを考えるあなたは、本質的にあなたが行くように、ネストされたコンテンツを拡大縮小、右縁部に向かって外ムービークリップの左端を引っ張っているの幅を減らします。このような結果になります

0     75 
------------------- 
|     | 
|  ---  | 
|  | |  | 
|  ---  | 
|     | 
|     | 
------------------- 

これを回避するには、ネストできます。あなたはまた、単に(graphics.clearを行うことができネストする)とにRECTを再描画しない場合、

var s:Sprite = new Sprite(); 
s.x =630; 
s.y = 340 
s.graphics.drawRect(0, 0, (_fuseCounter/_fuseWidth) * 120, 20); 
fuse.addChild(s); 

とは

s.widthを拡大縮小することを新しい_fuseするスプライトとスケールを追加します。小さな新しい幅

+0

私は新しいスプライトを追加することで多くの成功を収めませんでしたが、元のrectを再描画することはそのトリックでした。ありがとう! – King