【问题标题】:Problems with STAGESTAGE 的问题
【发布时间】:2014-03-05 14:48:00
【问题描述】:

我对 as3 编程很陌生。这个论坛已经帮了我很多,但现在我有一个问题,我不知道如何继续。所以这是我在 stackoverflow.com 上的第一篇文章。

我需要 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-File中的代码和现有flash-document中的“调用”(StageWebViewExample("....)...)

但现在代码不再起作用,并且出现以下错误: - 1119 访问可能未定义的属性阶段... - 1059 属性是只读的。 --> 两个错误都指向我在代码中标记的同一行。

有人知道为什么它不起作用吗? 我真的很感激一个好的提示!

【问题讨论】:

    标签: actionscript-3 flash error-handling stage stagewebview


    【解决方案1】:

    问题的答案是您的操作;)您将代码从文档类中移到另一个类中,这些代码无法作为实例属性访问舞台。我的意思是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);
            }
    
        }
    }
    

    【讨论】:

    • 感谢您的快速反应!基本上你只是用 stage 替换了 this.stage。
    • 不,我不只是替换,检查函数签名,它的最后一个元素。您应该将舞台上的引用传递给方法。
    • 啊。现在我明白了。我想我什至可以想象你的意思。但第二个错误仍然存​​在。 (1050 - 受保护...)
    • 有没有可能与公共、私有和受保护的属性有关?
    • 在某处粘贴完整的错误:pastebin.com 或显示如何使用 StageWebView 调用函数
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-06
    • 1970-01-01
    • 2016-08-28
    • 2016-09-12
    • 1970-01-01
    • 2016-11-20
    相关资源
    最近更新 更多