【问题标题】:How to apply that resize method?如何应用该调整大小方法?
【发布时间】:2010-05-20 20:54:18
【问题描述】:

我注意到了这个完整的 Flash 网站和奇妙的 http://www.houseoforange.nl/site/#/Photographers/Philip%20Riches/editorial%20women/

我怎样才能像他们一样应用 resize 方法?

任何例子都可能对我有很大帮助。

我有一个 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 definedWidth:Number = stage.stageWidth; var definedHeight: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;

}

}

【问题讨论】:

    标签: flash actionscript-3 resize


    【解决方案1】:

    看看这篇文章,它是针对 Flex 的,但你应该得到一些关于如何调整 Web 应用程序大小的信息:

    Improving Perceived Layout Performance in Flex

    我在我的应用程序中使用了它,它在以下位置正确调整大小:http://www.tdteam.com/ontime/

    希望对你有帮助 拉迪斯拉夫

    【讨论】:

    • 谁有申请Flash的例子和方法?
    • 我刚刚在上面添加了我的示例代码...请告诉我如何解决这个问题?
    猜你喜欢
    • 1970-01-01
    • 2014-01-10
    • 2012-10-28
    • 2012-04-15
    • 2021-10-11
    • 2023-04-05
    • 2015-06-25
    • 1970-01-01
    • 2013-07-22
    相关资源
    最近更新 更多