2011-01-20 95 views
3

在我的Flash應用程序(AS3)中,我想獲取舞臺大小並使用它,以便我的對象(用戶控制的)不能超出屏幕。然而,當我使用:調整舞臺大小並獲取正確的變量

stage.stageWidth; 
stage.stageHeight; 

我得到的價值並不是我想要的。他們給我的舞臺大小,但如果我調整窗口大小,數字也會改變。現在,在一個html頁面中,我認爲這不重要,因爲用戶無法調整它的大小......但是,我希望它比依靠窗口大小更穩定。我也試過使用:

stage.width; 
stage.height; 

但是,那些給了我「801」和「601」,比我的實際舞臺大小大一。當我調整窗口的大小時,這些值並沒有改變,但是它們更大。

所以我的問題是,我怎樣才能得到舞臺大小,無論調整窗口的大小總是800乘600? (也許隱藏在這個問題中,「爲什麼我會得到801和601?」和「我能阻止人們調整窗口的大小?」)唷!謝謝!

回答

9

首先,重要的是要知道stage.stageHeight - stage.stageWidth and stage.height - stage.width

stage.stageHeight // The real height of the stage 
stage.height // The height of the content on the stage 

所以之間的區別,之所以你會得到801和601是因爲在舞臺上的總含量的高度和寬度爲801 X 601

現在,調整大小的問題。如果您在網頁瀏覽器中顯示此內容,則可以設置影片的高度和寬度。將其設置爲800和600,而不是100%和100%。現在,無論用戶調整瀏覽器窗口大小,您的電影始終保持相同大小。

如果你確實希望在你的html標記中允許height =「100%」和width =「100%」,那麼你有幾個選項。

  1. 製作一個將作爲僞階段的MovieClip。它將是800 x 600.而不是將其添加到舞臺上,而是將其添加到此MovieClip(稱爲myStage)。現在,將對象保留在舞臺中的所有邏輯都將應用到myStage MovieClip。

  2. 您可以將常量放入您的AS3代碼中。例如:


public const STAGE_WIDTH:int = 800; 
public const STAGE_HEIGHT:int = 600; 

現在,你只需要使用這些值,而不是你的stage.stageHeight和stage.stageWidth值。當然,你還需要確定還包括

stage.align = StageAlign.TOP_LEFT; // or StageAlign.TOP 
stage.scaleMode = StageScaleMode.NO_SCALE; 
+0

這是一個很好的答案,我還能說什麼 – 2011-01-21 11:04:41

相關問題