AS3脚本中的StageWebView

时间:2014-03-25 08:36:15

标签: actionscript-3 flash class pdf stagewebview

我全都在那个论坛上阅读了很多有用的东西。现在,这是我第一次请求具体的帮助。

我对Flash很陌生并且有一个问题我现在奋斗了一个多星期。我的问题最有效和最优雅的方法是将StageWebView-Call放入as-File。

那将是计划: 在我的flash文件中:显示PDF文档" xyz"然后把它放在舞台上。

我已经尝试使用Switch-Case - 但是我很难摆脱PDF的问题。

这是我的想法: 首先是新的as-File ......

package  {

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 class mypdf {
            public var MyWebView:StageWebView
            public var file:String
            public var pdf:File


        public function mypdf(ActFile:String) {
                MyWebView = new StageWebView();
                file = ActualFile;                         //MARKING #1
                pdf = File.applicationDirectory.resolvePath(file);

                MyWebView.stage = stage;                   //MARKING #2
                MyWebView.viewPort = new Rectangle (200, 200, 400, 400);            
                MyWebView.loadURL(pdf.nativePath);
        }

    }

}

我想在我的flash文件中调用它...

stop();
var mynewpdf:mypdf = new mypdf("test.pdf");

显示两个错误:

1120: Access of undefined property error ActualFile (at Marking #1)
1120: Access of undefined property error Stage (at Marking #2)

通过为每个pdf定义许多不同的as-Scripts,我可以避免第一个错误。 我的主要问题是第二个错误。

如果有人有任何好主意,那将是非常好的。

再见 斯蒂芬

2 个答案:

答案 0 :(得分:0)

第二个错误意味着您需要将舞台传递到Web视图。将其作为参数传递给mypdf类,或者使mypdf DisplayObject(例如扩展Sprite)并将其添加到舞台。

我不确定这会解决你的问题 - 我认为StageWebView可以简单地显示html。 PDF将显示在您的浏览器中,因为它的外部插件已启动。

在AIR中,情况似乎有所不同:http://sujitreddyg.wordpress.com/2008/01/04/rendering-pdf-content-in-adobe-air-application/

答案 1 :(得分:0)

StageWebView不支持nativePath,您可以尝试使用pdf.url而不是使用它。 StageWebView也支持打开.pdf文件。

public function mypdf(ActFile:String) {
            MyWebView = new StageWebView();
            file = ActualFile;                         //MARKING #1
            pdf = File.applicationDirectory.resolvePath(file);

            MyWebView.stage = stage;                   //MARKING #2
            MyWebView.viewPort = new Rectangle (200, 200, 400, 400);    
            addChild( MyWebView );        
            MyWebView.loadURL(pdf.url);
    }

因为,StageWebView将支持file:///格式,但在nativePath中我们得到了C:// ..,所以,这对你有帮助。要么 只需将StageWebView转换为Display对象,然后使用addElement()将其添加到容器中。

你可以转换它,

   var _view:SpriteVisualElement = new SpriteVisualElement();
   _view.addChild( MyWebView);
   this.addElement( view );

要测试,只需在added_to_stage方法中调用此方法,以测试stage是否有。如果未设置阶段,也会出现此错误。