StageWebView в скрипте AS3
Я читал много полезных материалов на этом форуме. Теперь я впервые обращаюсь за конкретной помощью.
Я довольно новичок во Flash, и у меня есть проблема, с которой я борюсь больше недели. Самый эффективный и элегантный способ решения моей проблемы - поместить StageWebView-Call в файл.
Это был бы план: В моем flash-файле: показать PDF-документ "xyz" и поставить его на сцену.
Я уже пробовал это с Switch-Case - но тогда у меня есть проблемы, чтобы избавиться от PDF.
Это была моя идея: сначала новый файл-файл...
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)
Проделав гораздо больше работы, я мог бы избежать первой ошибки, определив множество различных as-Scripts для каждого файла PDF. Моя главная проблема - вторая ошибка.
Было бы здорово, если бы у кого-нибудь были хорошие идеи.
Пока, Стефан
2 ответа
Вторая ошибка означает, что вам нужно перейти на сцену в веб-представлении. Либо передайте его в класс mypdf в качестве параметра, либо создайте mypdf DisplayObject (например, расширение Sprite) и добавьте его в stage.
Я не уверен, что это решит вашу проблему в любом случае - я думаю, что 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 будет поддерживать формат file:///, но в nativePath мы получили C://.., так что это поможет вам. Или просто преобразуйте свой StageWebView в объект Display, а затем добавьте его в свой контейнер с помощью addElement().
Вы можете конвертировать его,
var _view:SpriteVisualElement = new SpriteVisualElement();
_view.addChild( MyWebView);
this.addElement( view );
Чтобы проверить, просто вызовите этот метод в методе Added_to_stage, чтобы проверить, имеет ли этап или нет. Эта ошибка возникнет, если ступень не установлена, значит тоже.