2011-06-15 96 views
0

創建一個全屏幕的網站,沒有戲劇。AS2舞臺大小檢測/ MC調整大小和幀更改時的位置?

我面對的唯一問題是,如果你調整窗口的大小,然後單擊一個新的菜單,項目的方案定位:即:

contactheader._x = Stage.width/2 - 252; 
    contactheader._y = Stage.height/2 - 264; 


不踢,直到你'通過重新調整窗口大小來將它撞到位。看到這裏有臺階活生生的例子,看問題:

http://flash.pcfuse.com/

項目文件在這裏:http://flash.pcfuse.com/mySite.zip

我能做些什麼,以從忽略了自己的方案定位停止的項目?

三江源親切

回答

0

我想你可能會運行到的問題是,當你將你的Flash應用程序的不同部分,要添加事件偵聽器,使顯示的對象在調整大小正確定位。但是,在實際轉到該部分時,您沒有對這些對象進行任何動態定位。

爲了澄清,當flash片首次加載時,它會抓住舞臺的高度和寬度,它是否將對象放置在這些計算上,然後坐在那裏。當你點擊標籤時,它不會重新加載這些對象並重新定位它們,因爲它在應用程序第一次啓動時就這樣做了。一旦你開始調整swf的大小,它會將它們彈出來,因爲這是onresize事件應該做的事情。

我會建議編寫一個函數,在每個部分中執行對象的定位,然後在您點擊某個選項卡時打開要打開的特定部分時調用該函數,然後從onresize中調用該函數事件。

+0

三江源親切:) – 2011-06-16 08:03:24

1
function setStage() 
{ 
    var sw:Number = Stage.width; 
    var sh:Number = Stage.height; 

    tabbar._x = Stage.width/2; 
    tabbar._y = Stage.height - 98; 

    google._x = Stage.width/2 - 183; 
    google._y = Stage.height/2 + 28; 

    about_txt._x = Stage.width/2 - 376; 
    about_txt._y = Stage.height/2 - 263; 

} 

// Add a listener 
var stageListener:Object = new Object(); 
Stage.addListener (stageListener); 

// When the Stage dimensions change... 
stageListener.onResize = setStage; 

// Call our function to set it all up right! 
setStage(); 


得到它;)

0

試試這個:如果在任何時候你想從更新其位置使用停止

onEnterFrame = function(){ 
    contactheader._x = Stage.width/2 - 252; 
    contactheader._y = Stage.height/2 - 264; 
} 

onEnterFrame = null; 
+0

這將導致更高的CPU使用率,因爲您不斷更新大小在(默認)12 fps。 – Raptor 2013-05-19 17:03:07

相關問題