В ActionScript заполните сцену внешним SWF - PullRequest
0 голосов
/ 28 января 2010

РЕДАКТИРОВАТЬ: с тех пор я решил эту проблему, просто переделав свое приложение на основе MXML и используя компонент SWFLoader, чтобы получить желаемый эффект, без необходимости перезагрузки. Поэтому этот вопрос больше не является проблемой для меня, но я оставляю его открытым для справки.


В MXML я могу легко получить желаемый эффект:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
  layout="absolute">
  <mx:SWFLoader width="100%" height="100%"
    source="3298.swf"/>
</mx:Application>

Это выглядит так:

(этап внешнего заполнения SWF) http://www.ubuntu -pics.de / bild / 40036 / screenshot_028_MSd0UZ.png

Однако я новичок в ActionScript, поэтому не могу понять, как продублировать это без MXML. Вот соответствующий класс:

package {
  import flash.net.URLRequest;
  import flash.display.DisplayObject;
  import flash.display.Loader;
  import flash.events.Event;

  public class Asset extends Loader {
    public var id:int;
    private var preview:Preview;
    private var swfContent:DisplayObject;
    public var zone:int;

    public function Asset(data:Object) {
      id = data.id;
      zone = data.zone;
    }

    public function loadInto(previewToSet:Preview):void {
      preview = previewToSet;
      var request:URLRequest = new URLRequest(url);
      contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteHandler);
      load(request);
    }

    private function onCompleteHandler(loadEvent:Event):void {
      swfContent = loadEvent.currentTarget.content;
      swfContent.scaleX = 1;
      swfContent.scaleY = 1;
      preview.addChild(swfContent);
    }

    private function get url():String {
      return id + ".swf";
    }
  }
}

В функции loadInto я даю Asset спрайт для жизни, и он начинает загружаться. Я могу подойти довольно близко, установив scaleX и scaleY каждый в 1, но я не могу понять, почему он не наверху, и почему SWF немного больше.

(внешний SWF слегка отключен) http://www.ubuntu -pics.de / bild / 40040 / screenshot_029_4pHKNI.png

Как мне дублировать 100% высоту и ширину MXML в чистом ActionScript? Это выполнимо? Если нет, у меня есть запасное приложение на чистом MXML, но моя реализация там включает загрузку SWF-файлов каждый раз, когда я хочу добавить или удалить какой-либо из них ... это не идеально. Поэтому я бы предпочел этот тип реализации, если смогу просто выяснить проблему с размерами.

Спасибо!

Ответы [ 3 ]

0 голосов
/ 28 января 2010

попробуйте добавить

stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;

к началу вашего класса, затем установите размер загруженного изображения в

loadedimage.x = loadedimage.y = 0;
loadedimage.width = stage.stageWidth;
loadedimage.height = stage.stageHeight;
0 голосов
/ 28 января 2010

Этот звук похож на точку привязки вашего swf не совсем в его углу. Попробуйте сместить позиции x и y в вашем коде или, что еще лучше, измените swf так, чтобы точка привязки находилась в углу?

0 голосов
/ 28 января 2010

Используйте событие resize из объекта сцены , и каждый раз, когда вызывается событие resize , изменяйте размер содержимого в соответствии с:

stage.addEventListener(Event.RESIZE, onResize);

public function onResize(e:Event):void{
 swfContent.width=stage.stageWidth;
 swfContent.height=stage.stageHeight;
}
...