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, чтобы проверить, имеет ли этап или нет. Эта ошибка возникнет, если ступень не установлена, значит тоже.

Другие вопросы по тегам