OpenLaszlo убивает некоторые события мыши загруженного приложения Flex.

Это вопрос о внутренностях OpenLaszlo (или, скорее, Flex?):

Мне удалось загрузить полный swf-файл приложения Flex в OpenLaszlo (выпуск магистрали, более старые выпуски не удались). Он работает во Flash 10 так же, как и в 11. Но OpenLaszlo, кажется, захватывает или блокирует определенные события мыши. Когда я добавляю SWF в

YFilesSWF.content.sprite (YFilesSWF is extending the window class)

тогда большинство действий мыши работают (например, кнопки Flex), но некоторые не работают (некоторые элементы, на которые можно щелкнуть, на своего рода холсте). Далее я заметил, что когда я добавляю SWF в

YFilesSWF.sprite (YFilesSWF is extending the view)

, то SWF больше не реагирует ни на какие события мыши. Это означает, что окно несколько лучше, но недостаточно. я использую

flash.display.Loader

class для загрузки SWF обычным способом. Это реализация класса загрузчика AS3, которую я использую для загрузки swf и который я включаю в приложение OpenLaszlo:

 public class LoadSwf extends Sprite
 {
      public var externalSwfLoader:Loader = new Loader();
      public var swfDisplayObject:DisplayObject;
      public var swfComObject:Object;

     public function LoadSwf(url:String,p:Sprite):void
     {
//                externalSwfLoader.mouseChildren = false;
//                this.mouseChildren = false;
//                p.mouseChildren = false;   

//                externalSwfLoader.mouseEnabled = false;
//                this.mouseEnabled = false;
//                p.mouseEnabled = false;   

            p.addChild(this);
          externalSwfLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, createSwfObjects);
          externalSwfLoader.load(new URLRequest(url));
     }

     public function createSwfObjects(evt:Event):void
     {
          var loaderInfo:LoaderInfo = evt.target as LoaderInfo;

          swfDisplayObject = evt.target.content;
          swfComObject = loaderInfo.content;

          addChild(swfDisplayObject);
     }
}

Это код OpenLaszlo того, как используется класс:

<class name="YFilesSWF" extends="window">

            <passthrough>
                    import LoadSwf;
            </passthrough>

            <attribute name="loadSwf" />

            <handler name="oninit"><![CDATA[
                    this.loadSwf = new LoadSwf("SimpleGraphEditor.swf", this.content.sprite);
            ]]></handler>
 </class>

Кто-нибудь знает, что и где OpenLaszlo уничтожает некоторые события мыши Flex и как это предотвратить? Есть ли еще лучший компонент, чем окно, которое сохранит события мыши Flex? Что потребуется изменить в исходном коде компонентов OL?

Спасибо!


person Horst P    schedule 29.04.2012    source источник
comment
Я исправил это сам, просто расширив представление вместо окна, а затем установив для атрибута defaultplacement значение null. Координата x устанавливается на 1254 без всякой причины, поэтому я сохраняю ее на 0 с помощью обработчика. Но потом все работает нормально.   -  person Horst P    schedule 30.04.2012
comment
Но класс YFilesSWF не должен быть полностью пустым, поэтому необходимо добавить фиктивное представление, например: ‹attribute name=defaultplacement value=dummy/› ‹view name=dummy› ‹/view›   -  person Horst P    schedule 30.04.2012