我已经在那个论坛上读了很多有用的东西。这是我第一次寻求具体的帮助。
我对Flash很陌生,有一个问题,我挣扎了一个多星期了。对于我的问题,最有效和最优雅的方法是将StageWebView-Call放入as-File中。
这就是计划:在我的flash-File中:显示一个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-File中调用它。
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来避免第一个错误。我的主要问题是第二个错误。
如果有人有什么好主意就太好了。
再见,Stephan
第二个错误意味着你需要将舞台传递给web视图。要么将其作为参数传递给mypdf类,要么使mypdf显示对象(例如扩展Sprite)并将其添加到舞台。
我不确定这将解决你的问题无论如何-我认为StageWebView可以简单地显示html。PDF显示在浏览器中是因为启动了一个外部插件。
在AIR中情况似乎不同:http://sujitreddyg.wordpress.com/2008/01/04/rendering-pdf-content-in-adobe-air-application/
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将支持文件:///格式,但在nativePath我们得到C://..所以,这对你有帮助。或只需将StageWebView转换为显示对象,然后使用addElement()将其添加到容器中。
可以通过
进行转换 var _view:SpriteVisualElement = new SpriteVisualElement();
_view.addChild( MyWebView);
this.addElement( view );
要通过测试,只需在addded_to_stage方法中调用该方法来测试stage是否具有。