2014-03-05 59 views
0

我是as3編程的新手。這個論壇已經幫了我很多,但現在我有一個問題,我不知道該怎麼去。所以這是我在堆棧overflow.com上的第一篇文章。STAGE的問題

我需要StageWebView來顯示PDF文檔。幾個小時後,我成功了。我在一個新的空白文檔中創建了代碼並逐步測試它。

This is my code: 

import flash.display.MovieClip; 
import flash.media.StageWebView; 
import flash.geom.Rectangle; 
import flash.filesystem.File; 
import flash.display.Sprite; 
import flash.display.Stage; 

public function StageWebViewExample(pdfdoc:String, xpos:Number, ypos:Number, breite:Number, hoehe:Number) 
{ 
    var webView:StageWebView = new StageWebView(); 
    webView.stage = this.stage; //PROBLEM LINE 
    webView.viewPort = new Rectangle (xpos, ypos, breite, hoehe);   
    var file:String = pdfdoc; 
    var pdf:File = File.applicationDirectory.resolvePath(file); 
    webView.loadURL(pdf.nativePath);    
} 

StageWebViewExample("test.pdf", 200, 200, 600, 1200); 

經過測試,我將代碼複製到現有的Flash文檔中。 (在幾個as文件中的代碼和「調用」(StageWebViewExample(「....)在現有的Flash文檔中...)

但是現在代碼不再工作了,以下錯誤: - 可能未定義的屬性階段的1119個接入... - 1059屬性爲只讀 - >這兩個錯誤指的是我標誌着代碼相同的行

有沒有人一個想法,爲什麼。它不工作? 我真的很感激良好的提示!

回答

0

問題的答案是你的行爲;)你從另一個文檔類中移動代碼,沒有作爲實例屬性訪問舞臺。我的意思是this.stage。 通行證舞臺也給方法StageWebViewExample,函數簽名會看起來像:

public function stageWebViewExample(stage: Stage, pdfdoc:String, xpos:Number, ypos:Number, breite:Number, hoehe:Number):void { 
    var webView:StageWebView = new StageWebView(); 
    webView.stage = stage; 
    webView.viewPort = new Rectangle (xpos, ypos, breite, hoehe);   
    var file:String = pdfdoc; 
    var pdf:File = File.applicationDirectory.resolvePath(file); 
    webView.loadURL(pdf.nativePath);    
} 

工作AIR例如:

package { 

    import flash.display.Sprite; 
    import flash.display.Stage; 
    import flash.display.StageAlign; 
    import flash.display.StageScaleMode; 
    import flash.events.Event; 
    import flash.geom.Rectangle; 
    import flash.media.StageWebView; 

    public class StackOverflow extends Sprite { 

     public function StackOverflow() { 
      addEventListener(Event.ADDED_TO_STAGE, onAdded); 
     } 

     private function onAdded(e:Event):void { 
      removeEventListener(Event.ADDED_TO_STAGE, onAdded); 

      stage.align = StageAlign.TOP_LEFT; 
      stage.scaleMode = StageScaleMode.NO_SCALE; 

      start(); 
     } 

     private function start():void { 
      showWebViewAt(this.stage, "http://www.iab.net/media/file/VASTv3.0.pdf", new Rectangle(0, 0, stage.stageWidth * 0.5, stage.stageHeight)); 
     } 

     private function showWebViewAt(stage:Stage, path:String, frame:Rectangle):void { 
      var webView:StageWebView = new StageWebView(); 
      webView.stage = stage; 
      webView.viewPort = frame; 
      webView.loadURL(path); 
     } 

    } 
} 
+0

謝謝你的快速反應!基本上你只是用stage來替換this.stage。 – user3383921

+0

我已經試過了。沒有改變:-( – user3383921

+0

不,我不只是替換,檢查函數簽名,它的最後一個元素,你應該把舞臺上的參考傳給方法 –