ActionScript: масштабирование вложенного SWF-файла для заполнения контейнера - PullRequest
0 голосов
/ 26 августа 2010

Я совершенно новичок в ActionScript.Я вложил SWF-файл в другой SWF-контейнер, чтобы иметь возможность отправлять клики из flash-объекта в javascript снаружи.Я могу получать клики снаружи, и эта часть работает нормально.Но внутреннее содержимое не масштабируется до размера внешнего контейнера.Я использую mxmlc из 3.5 SDK, без каких-либо дополнительных параметров, кроме имени файласкрипта, чтобы скомпилировать код действия в SWF.Как я могу заставить внутренний контент заполнять контейнер?

Вот код ActionScript:

   package
    {
     import flash.external.ExternalInterface;
     import flash.events.MouseEvent;  
     import flash.display.MovieClip;
     import flash.display.Loader;
     import flash.net.URLRequest;
     import flash.events.*;
     import flash.display.Sprite;
     import flash.text.TextField;
     import flash.text.TextFormat;
     import flash.text.TextFieldAutoSize;

     [SWF(backgroundColor="#ffff00", frameRate="24")]

 public class Container extends MovieClip
 {
  private var loader:Loader = new Loader(); 
  private var textfield : TextField = new TextField();

  public function Container()
   {
    root.addEventListener( MouseEvent.CLICK, useExternal, true );      
    var request:URLRequest = new URLRequest("adv.swf");
    loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loader_OnComplete);
    loader.addEventListener(MouseEvent.CLICK, loader_OnClick);
    loader.load(request);

    addChild( textfield );    
   }

   private function loader_OnComplete(event:Event):void
   {
    textfield.text = stage.stageWidth + ", " + stage.stageHeight;
    textfield.autoSize = TextFieldAutoSize.LEFT;
    textfield.setTextFormat(new TextFormat(null,48));
    textfield.x = stage.stageWidth  - textfield.width;
    textfield.y = stage.stageHeight / 2 - textfield.height / 2;

    loader.content.width = stage.stageWidth;
    loader.content.height = stage.stageHeight;

    addChild(loader);
   }

   private function loader_OnClick(event:MouseEvent):void
   {
    ExternalInterface.call( "swfClickFunction" );
   }

   private function useExternal(event:MouseEvent):void
   {
    ExternalInterface.call( "ExternalFunction" );
   }
 }
}

И HTML:

 <html>
<head>
<script language="javascript">
function swfClickFunction()
{
 alert('Flash Clicked!');
}

function ExternalFunction()
{
 alert('ExternalFunction!');
}

</script>
<body>
<OBJECT
 name = Container
 id = Container
 codeBase=http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0
 width = 800
 height = 80
 classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000>
 <PARAM NAME="movie" VALUE='Container.swf'>
 <PARAM NAME="quality" VALUE="high">
 <embed
  name='Container'
  id='Container'
  src='Container.swf' quality="high"
  pluginspage="http://www.macromedia.com/go/getflashplayer"
  type="application/x-shockwave-flash"
  width='800'
  height='80'>
 </embed>
</OBJECT>
</body>

Ответы [ 2 ]

0 голосов
/ 26 августа 2010

Добавил это в начало метода Container ():

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

и это в начало приватной функции loader_OnComplete (event: Event): пустой метод

loader.content.width=stage.stageWidth;  

и это работает!

0 голосов
/ 26 августа 2010
loader.content.width = 800;
loader.content.height = 80;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...