我有幾個想法,從使用ExternalInterface的JavaScript的調用和動作函數,到傳遞給swf的FlashVar,讓swf知道div的大小,更簡單的想法。
在這裏。
有1個MovieClip作爲背景和1個包含頭部的MoveClip。
我認爲你最好的選擇應該是你的例子中的「這是最上面的Flash電影」選項。 你最好將設置
stage.scaleMode = StageScaleMode.NO_SCALE;
或
stage.scaleMode = StageScaleMode.SHOW_ALL;
的想法是有內容的比例縮放。
然後,您將爲resize事件添加事件偵聽器並縮放/重繪背景。
stage.addEventListener(Event.RESIZE, stageResizeHandler);
function stageResizeHandler(event:Event = null):void{
//assuming your background is called "background"
background.width = stage.stageWidth;
background.height = stage.stageHeight;
//if content needs recentering, assuming "content" is the name used
content.x = (stage.stageWidth - content.width) * .5;
content.y = (stage.stageHeight - content.height * .5;
}
我已經設置了事件處理程序參數默認的,所以你可以調用該函數withouth的 分派事件
例如
stageResizeHandler();
代替
stage.dispatchEvent(new Event(Event.RESIZE));
您可能需要調用該函數,當你initiallize,不知道。
您還需要根據舞臺的大小按比例調整內容的大小。 所以這裏的一些我測試代碼:
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
stage.addEventListener(Event.RESIZE, stageResizeHandler);
stageResizeHandler();
function stageResizeHandler(event:Event = null):void{
//resize bg
bg.width = stage.stageWidth;
bg.height = stage.stageHeight;
//scale proportionally
if(content.width > stage.stageWidth || content.height > stage.stageHeight){
var ratio:Number = getRatio(content);
if(stage.stageWidth > stage.stageHeight){
content.height = stage.stageHeight;
content.width = content.height * ratio;
}else
if(stage.stageWidth < stage.stageHeight){
content.width = stage.stageWidth;
content.height = content.width/ratio;
}
}else {
content.scaleX = content.scaleY = 1;
}
//centre
content.x = (stage.stageWidth - content.width) * .5;
content.y = (stage.stageHeight - content.height) * .5;
}
function getRatio(target:MovieClip):Number{
var ratio:Number;
target.width > target.height ? ratio = (target.width/target.height) : ratio = (target.height/target.width);
return ratio;
}
不幸的是我已經注意到某些尺寸的一個有些閃爍。我猜測縮放比例和比例變化的事實通常取決於你如何調整大小。
感謝您的建議,不幸的是,我應該明白,這只是一個示例圖片。閃光燈將成爲各種圖像的照片幻燈片。我會將這個例子改爲少量的,以免誤導。 我真的很感激你儘管想通了。本來是解決這個問題的好方法。 – user73119 2009-06-20 02:51:55
沒問題。我意識到我錯過了調整內容的部分,所以編輯了我的答案。謝謝你提醒我。希望這可以幫助。 – 2009-06-20 03:04:31