我对as3编程很新。这个论坛已经给了我很多帮助,但现在我有一个问题,我不知道如何继续。所以这是我在堆栈overflow.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文档中的StageWebViewExample(“....)”)
但是现在代码不再起作用,并且存在以下错误: - 1119访问可能未定义的财产阶段...... - 1059财产是只读的。 - >两个错误都指的是我在代码中标记的同一行。
有谁知道为什么它不起作用? 我真的很感激一个好的暗示!
答案 0 :(得分: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);
}
Working 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);
}
}
}