2011-03-23 70 views
0

我正在加載SWF中的外部影片剪輯。舞臺縮放模式是「沒有縮放」,舞臺對齊是左上角。我調整移動剪輯的實際高度和父影片剪輯的寬度在onResize受到事件中使用如下:僅在窗口中可見的外部影片剪輯僅調整大小

object.x = stage.x; 
object.y = stage.y; 
object.width = stage.stageWidth; 
object.height = stage.stageHeight; 

但它不工作。兩點很重要:

  1. 使用Flash Player的年齡超過10
  2. 當現在是較早的工作,它的工作原理,只有當我調整窗口的大小。我只是不明白爲什麼它會造成問題。

任何形式的任何幫助將受到高度讚賞,因爲我被阻止只是因爲這個。我不想使用舞臺的精確適合比例模式。

謝謝!

+0

當你說「它不工作」它實際上在做什麼?父swf被設置爲no_scale =,因此它填充了其中的任何容器。您如何設置子級的stageScaleMode?如果它也被設置爲no_scale,那麼它「應該」也填充可用空間(雖然我發現特定的場景非常挑剔)。如果其設置爲SHOW_ALL(默認值),那麼它必須由**手動**由父級放大。 – Bosworth99 2011-03-23 00:58:20

回答

1

記住object.height和object.width是指在物體上的活動內容取決於你如何將其導入:

import flash.net.URLRequest; 
    import flash.display.Loader; 
    import flash.events.Event; 
    import flash.events.ProgressEvent; 
    import flash.display.MovieClip; 

    function startLoad() 
    { 
    var mLoader:Loader = new Loader(); 
    var mRequest:URLRequest = new URLRequest("test.swf"); 
    mLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteHandler); 
    mLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgressHandler); 
    mLoader.load(mRequest); 
    } 

    function onCompleteHandler(loadEvent:Event) 
    { 
      var object:MovieClip = loadEvent.currentTarget.content; 
      object.x = stage.x; 
      object.y = stage.y; 
      trace(object.width); 
      trace(stage.stageWidth); 
      object.width = stage.stageWidth; 
      trace(object.height); 
      trace(stage.stageHeight); 
      //object.height = stage.stageHeight; 

      addChild(object); 


} 
function onProgressHandler(mProgress:ProgressEvent) 
{ 
var percent:Number = mProgress.bytesLoaded/mProgress.bytesTotal; 
trace(percent); 
} 
startLoad(); 

上述作品該代碼,但你可能會拉幅到內容被伸出場景的地方,追蹤寬度和高度。

編輯:

YouTube的它會是這樣的:

var loader:Loader = new Loader(); - global variable 

function initialzer(){ 
     loader.contentLoaderInfo.addEventListener(Event.INIT, onLoaderInit); 
     loader.load(new URLRequest("http://www.youtube.com/apiplayer?version=3")); 
} 

private function onLoadInit(event:Event){ 
    addChild(loader); 
    loader.content.addEventListener("onReady", onPlayerReady); 
    loader.content.addEventListener("onError", onPlayerError); 

} 

function onPlayerReady(event:Event):void { 
    player = loader.content; 
    player.width = 111; 
    player.height = 111; 
} 
+0

其實問題是:我正在擴展加載器來加載YouTube播放器。它不支持以下屬性: var object:MovieClip = loadEvent.currentTarget.content; 以下代碼片段稱爲OnResize()函數的一部分,導致出現問題: object.x = stage.x; object.y = stage.y; object.width = object.stage.stageWidth; object.height = object.stage.stageHeight; 即使分配後,對象的高度和寬度也爲'0'。我不明白爲什麼。當我調整窗口大小時,它會正常工作,並且電影會相應地調整大小。 – 2011-03-23 03:25:16

+0

我不知道你是如何編碼它,但它應該與youtube播放器以及我編輯上述代碼。 – Saad 2011-03-23 03:32:15

+0

@謙虛的學習者有幫助嗎? – Saad 2011-03-23 04:30:35

0

你可能會應用轉換前的對象已經被添加到舞臺上,因此,該階段的引用爲null或者其屬性爲空。您應該將事件偵聽器添加到對象Event.ADDED_TO_STAGE,然後在事件的回調中應用您的轉換。此外,您不需要通過object.stage訪問舞臺對象,舞臺應該是一個靜態實體,您可以從對象內部或外部調用該靜態實體。如果您無法通過在應用此轉換的範圍內鍵入「stage」來訪問該階段,那麼這可能是問題的原因。就像我說的,嘗試使用ADDED_TO_STAGE事件,在回調中應用轉換,如果我是對的,則一切都應該沒問題。另外,當您嘗試投射上面發佈的對象時,請使用「as」關鍵字。例如:

var object:MovieClip = loadEvent.currentTarget.content as MovieClip; 

你的聲明中表示,YouTube播放器「不支持此方法」並沒有真正意義,因爲這無關與YouTube或任何其他外部API。 Casting /類型轉換是一種編程語言功能。唯一的情況是,如果youtube播放器與MovieClip對象沒有共同的聲音,在這種情況下,您會在運行時遇到類型強制錯誤(甚至可能在某些情況下編譯時),告訴您簡單不能將對象作爲完全不同的對象進行投射。無論如何,希望這有助於。

相關問題