Основное использование swffit. Как заставить это работать - PullRequest
1 голос
/ 10 февраля 2010

Как можно использовать swffit (http://swffit.millermedeiros.com/)? Я имею в виду, что в моем проекте у меня динамически расширяемое флэш-приложение, поэтому, когда расширяющаяся часть обогащается снизу, я вижу стандартную полосу прокрутки флэш-памяти. Не полоса прокрутки браузера ...

Вот как я определил свое приложение:

        public function addPanel(evt:Event):void
        {
            var panel:Panel = new Panel();
                panel.name = "new";
                panel.title = "new";
                panel.height = 30;
                panel.width = 100;
            this.addChild(panel);
            SWFFit.fit('my_flash', 800, 600);
        }


        public function main(event:Event):void{
            SWFFit.fit('my_flash', 800, 600);


        }
    ]]>
</mx:Script>
<mx:Button label="Add" click="addPanel(event)"/>

HTML-файл (такой же, как описано в документации):

<html>
  <head>
    <script type="text/javascript" src="swfobject.js"></script>
    <script type="text/javascript" src="swffit.js"></script>
    <script type="text/javascript">
      swfobject.registerObject("my_flash", "8.0.0");
      swffit.fit("my_flash",800,600);
    </script>
  </head>

  <body>
    <object id="my_flash" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="100%" height="100%">
      <param name="movie" value="Sample.swf" />
      <!--[if !IE]>-->
      <object type="application/x-shockwave-flash" data="Sample.swf" width="100%" height="100%">
    <!--<![endif]-->

    <div>
      <a href="http://www.adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" title="Get Adobe Flash player" /></a><br />
      You need <a href="http://www.adobe.com/go/getflashplayer">Flash Player 8</a> and allow javascript to see the content of this site..
    </div>
    <!--[if !IE]>-->
      </object>
      <!--<![endif]-->
    </object>

  </body>
</html>

Буду рад услышать любые отзывы,


Добавлены исправления, описанные в ответе 1. Но встречаются интересные проблемы: например, полоса прокрутки браузера появляется только при изменении размера окна браузера, а не при нажатии кнопки добавления ...

http://img.skitch.com/20100210-qx9trerh8rq5athhnuwtidetr6.png

После нескольких нажатий на кнопку добавления отображается полоса прокрутки по умолчанию во флэш-памяти ...

1 Ответ

1 голос
/ 10 февраля 2010

Ознакомьтесь с этим Учебником SWFFit .

И проверьте, не меняет ли ваш width="300" height="300" на width="100%" height="100%" что-нибудь. Если у вас есть это и явные размеры в swffit.fit("my_flash", 800, 600);, swffit устанавливает минимальный размер, поэтому, если область просмотра вашего браузера находится ниже их, появляются полосы прокрутки, если они выше них, swf изменяет размеры на 100% по ширине и высоте.

Затем для динамического изменения размера SWF-файла из Actionscript используйте класс com.millermedeiros.swffit.SWFFit. Вы можете вызвать SWFFit.fit(...) и несколько других методов из ActionScript, и он сделает весь javascript, чтобы изменить его размер.

В источнике swffit есть несколько примеров .fla, посмотрите, как они это делают.

Обновление: вот некоторый код, который демонстрирует, как изменить размер SWF из ActionScript.

Пример приложения

<?xml version="1.0" encoding="utf-8"?>
<mx:Application
    xmlns:mx="http://www.adobe.com/2006/mxml"
    layout="absolute">

    <mx:Script>
        import com.millermedeiros.swffit.*;

        public static const FLASH_ID:String = "my_flash";

        public function updateSize():void
        {
            var width:Number = widthSlider.value;
            var height:Number = heightSlider.value;
            trace("width: ", width, " height: ", height);
            SWFFit.fit(FLASH_ID, width, height);
        }
    </mx:Script>

    <mx:Panel backgroundColor="0xaaaaaa" width="80%" height="80%"
        horizontalCenter="0" verticalCenter="0"/>

    <mx:VBox width="100%" height="100%">
        <mx:Label text="Width"/>
        <mx:HSlider id="widthSlider" liveDragging="true" change="updateSize()"
            minimum="300" maximum="2000"/>
        <mx:Label text="Height"/>
        <mx:HSlider id="heightSlider" liveDragging="true" change="updateSize()"
            minimum="300" maximum="2000"/>
    </mx:VBox>
</mx:Application>             

Образец шаблона HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
    <head>
        <script type="text/javascript" src="swfobject.js"></script>
        <script type="text/javascript" src="swffit.js"></script>
        <script type="text/javascript">
            swfobject.registerObject("my_flash", "10.0.0", "expressInstall.swf");
            swffit.fit("my_flash", 800, 600);
        </script>
    </head>

    <body>
        <object id="my_flash" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="100%" height="100%">
            <param name="movie" value="Sample.swf" />
            <!--[if !IE]>-->
            <object type="application/x-shockwave-flash" data="Sample.swf" width="100%" height="100%">
        <!--<![endif]-->

        <div>
            <a href="http://www.adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" title="Get Adobe Flash player" /></a><br />
            You need <a href="http://www.adobe.com/go/getflashplayer">Flash Player 10</a> and allow javascript to see the content of this site..
        </div>
        <!--[if !IE]>-->
            </object>
            <!--<![endif]-->
        </object>

    </body>
</html>

Лучший, Lance

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...