2016-04-25 73 views
1

是否有可能在瀏覽器中運行這個簡單的代碼? 在.swf中,似乎都可以正常工作,但我無法在瀏覽器中調整.swf的大小... 舞臺沒有在HTML頁面中調整大小。 通過.swf flile它就像一個魅力。 有人對此問題有所瞭解嗎?Stage.RESIZE:是否可以在瀏覽器中運行此示例?

package com{ 
    import flash.display.Graphics; 
    import flash.display.MovieClip; 
    import flash.display.Stage; 
    import flash.display.StageAlign; 
    import flash.display.StageQuality; 
    import flash.display.StageScaleMode; 
    import flash.events.Event; 
    import flash.text.TextField; 

public class Main extends MovieClip{ 
    private static const ORANGE:int = 0xff9900; 
    var bg:MovieClip; 
    var bg_mask:MovieClip; 
    var marginx:int = 10; 
    var marginy:int = 10; 
    var display:MovieClip; 
    var displayTextField:TextField; 
    var ellipseWidth:int = 90; 
    var ellipseHeight:int = 90; 
    public function Main(){ 
     super(); 
     bg = new MovieClip(); 
     bg_mask = new MovieClip(); 
     display = new MovieClip(); 
     displayTextField = new TextField(); 
     this.addChild(bg); 
     this.addChild(bg_mask); 
     this.addChild(display); 
     this.display.addChild(displayTextField); 
     displayTextField.text = ""; 
     displayTextField.x = ellipseWidth/Math.PI; 
     displayTextField.y = ellipseHeight/Math.PI; 
     stage.align = StageAlign.TOP_LEFT; // or StageAlign.TOP 
     stage.scaleMode = StageScaleMode.NO_SCALE; 
     drawBackground(); 
     display.mask = bg_mask; 
     addListeners(); 
    } 
    private function drawBackground(thickness:int=1,lineColor:int=0x000000,lineAlpha:Number=0.5,fillColor:int=ORANGE,fillAlpha:Number=0.5):void{ 
     var g:Graphics = bg.graphics; 
     g.clear(); 
     g.lineStyle(thickness,lineColor,lineAlpha); 
     g.beginFill(fillColor,fillAlpha); 
     g.drawRoundRect(marginx,marginy,this.stage.stageWidth-marginx*2,this.stage.stageHeight-marginy*2,ellipseWidth,ellipseHeight); 
     g.endFill(); 
    } 
    private function drawMask():void{ 
     var g:Graphics = bg_mask.graphics; 
     g.clear(); 
     g.lineStyle(1,0x000000,0.3); 
     g.beginFill(0xcccccc,0.1); 
     g.drawRoundRect(marginx,marginy,this.stage.stageWidth-marginx*2,this.stage.stageHeight-marginy*2,90,90); 
     g.endFill(); 
    } 
    private function addListeners():void{ 
     stage.addEventListener(Event.ADDED,updateLabel); 
     stage.addEventListener(Event.RESIZE,updateLabel); 
    } 
    private function updateLabel(e:Event):void{ 
     updateDisplay(); 
     drawBackground(); 
     drawMask(); 
    } 
    private function updateDisplay():void{ 
     var tf:TextField = displayTextField; 
     tf.text = ("{" + this.stage.stageWidth + ";" + this.stage.stageHeight + "}"); 
    } 
} 

}

+0

您需要顯示將swf放入html頁面的HTML標記。這可能是你發出謊言的地方。如果它使用固定大小,那麼你在AS3代碼中做了什麼並不重要。 – BadFeelingAboutThis

+0

你爲什麼不把它作爲答案發表,而不是作爲評論(我不能接受你的答案作爲這種情況下的正確答案)? 它工作完美! 非常感謝。由於我將stage.scaleMode設置爲: stage.scaleMode = StageScaleMode.NO_SCALE; 我以爲這是重寫我的Html css ... 愚蠢的錯誤! – tatactic

回答

2

在在線情況下,flash文件包含一個HTML父元素(對象/嵌入)內。

您的AS3代碼控制如何在該元素內顯示您的Flash內容。除了它的容器外,它什麼都不知道。

很可能,您的問題是該HTML容器。如果它的大小是固定的,那麼無論你在AS3中做什麼,它都不會擴展到容器之外。

嘗試給你的HTML容器流體尺寸(例如100%寬度,100%高度)以及任何祖父母html元素,以使您的尺寸更具動態性。

+1

我對這件事感覺不錯。 這工作就像一個魅力! 謝謝你的回覆! 而忘記不好的感受;) 你的答案簡短而高效! 此致敬禮。 Nicolas。 – tatactic

相關問題