0

私はas3プログラミングにかなり慣れていません。このフォーラムはすでに私を大いに助けてくれましたが、今はどうすればいいのかわからないという問題があります。だから、これは私のスタックオーバーフロー.comへの最初の投稿です.

PDF ドキュメントを表示するには StageWebView が必要です。数時間後、成功しました。新しい空白のドキュメントでコードを作成し、段階的にテストしました。

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);

テスト後、既存のフラッシュ ドキュメントにコードをコピーしました。(複数の as-File 内のコードと、既存の flash-document 内の "calling" (StageWebViewExample("....)...)

しかし、コードはもう機能せず、次のエラーがあります。 - 1119 未定義の可能性のあるプロパティ ステージへのアクセス... - 1059 プロパティは読み取り専用です。--> コードでマークした同じ行を参照している両方のエラー。

なぜそれが機能しないのか、誰にもわかりませんか?良いヒントをいただければ幸いです。

4

1 に答える 1

0

質問に対する答えはあなたの行動です;)インスタンスプロパティとしてステージにアクセスできないコードをドキュメントクラスから別のクラスに移動しました。つまりthis.stage。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);
        }

    }
}
于 2014-03-05T14:57:48.117 に答える