Как применить этот метод изменения размера? - PullRequest
0 голосов
/ 21 мая 2010

Я заметил этот полный флеш сайт и удивляюсь http://www.houseoforange.nl/site/#/Photographers/Philip%20Riches/editorial%20women/

Как я могу применить метод изменения размера, как они это сделали?

Любые примеры могут мне очень помочь.

У меня есть один main.swf и page.swf, который загружается в main.swf. Мой page.swf содержит уменьшенные изображения, и он уже находится в середине сцены.

Когда запускается handleResizeObjectOnStage, он снова начинает центрироваться на сцене. Но это не тот же самый центр, примененный к page.swf

Я хочу иметь возможность изменять размеры, как в примере, который я опубликовал.

Вот что я сделал до сих пор:

  // Constructor
public function Gallery()
{
 addEventListener(Event.ADDED_TO_STAGE, handleOnStage, false, 0, true);         
}


private function handleOnStage(event:Event):void
{   
 removeEventListener(Event.ADDED_TO_STAGE, handleOnStage);

 tabSWFLoader = Vector.<String>([INTRO_SWF, ...]);

 loader = new Loader();
 nextMC = new Sprite(); // uses to load next page
 currentMC = new Sprite(); 

 initObjectsOnStage(event);
 initIntro();

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

 stage.addEventListener(Event.RESIZE, handleResizeObjectsOnStage, false, 0, true);
}   

private function handleResizeObjectsOnStage(event:Event=null):void
{
 removeEventListener(Event.RESIZE, handleResizeObjectsOnStage);
 initObjectsOnStage(event);
}

private function initObjectsOnStage(event:Event):void
{
  initBackground();
  initMenu();

  var definedWidth:Number = stage.stageWidth;
  var definedHeight:Number = stage.stageHeight;

  if (event.type == Event.RESIZE) {
   var tempMC:Sprite = getCurrentMC();
   tempMC.x = (definedWidth - tempMC.width) * 0.5;

   addChild(tempMC);
  }
} 

private function initIntro():void
{
 loader.load(new URLRequest(tabSWFLoader[currentIndexSWF]));
 loader.contentLoaderInfo.addEventListener(Event.OPEN, handleDisplayIntroImage, false, 0, true);
 loader.contentLoaderInfo.addEventListener(Event.COMPLETE, handleCompletedIntroImage, false, 0, true);
} 

private function handleDisplayIntroImage(event:Event):void
{
 currentMC.alpha = 0;

 TweenLite.to(currentMC, DELAY, { alpha:1, ease:Linear.easeIn });
 addChild(currentMC);
}


private function handleCompletedIntroImage(event:Event):void
{
 // Add into currentMC
 currentMC.addChild(loader);
}

Я также пытался использовать scaleX / scaleY, получил неловкий результат

private function initObjectsOnStage(event:Event):void

{ ... var определенныеWidth: Number = stage.stageWidth; varfinedHeight: Number = stage.stageHeight;

if (event.type == Event.RESIZE) {
 var tempMC:Sprite = getCurrentMC();
 addChild(tempMC);

 var scaleX:Number = definedWidth/tempMC.width;
 var scaleY:Number = definedHeight/tempMC.height;

 (scaleX > scaleY) ? scaleX = scaleY : scaleY = scaleX;

 tempMC.scaleX = scaleX;
 tempMC.scaleY = scaleY;

}

}

1 Ответ

0 голосов
/ 21 мая 2010

Посмотрите на эту статью, она предназначена для Flex, но вы должны получить некоторую информацию о том, как изменить размер веб-приложения:

Улучшение воспринимаемой производительности макета в Flex

Я использовал это в своем приложении, размеры которого правильно указаны на: http://www.tdteam.com/ontime/

надеюсь, это поможет Ладислав

...