PDA

Просмотр полной версии : Смена динамически подгружаемых картинок работает в FF, в IE - нет


LokiDi L0ck
05.12.2007, 23:48
По-тихоньку играюсь с as3. И в продолжение прошлой темы:
as3 скрипт:

package {
import flash.display.*;
import flash.net.*;
import flash.events.*;
import flash.utils.*;
import flash.geom.Matrix;

[SWF(width="400", height="220", backgroundColor="#FFFFFF")]

public class PicturesSlider extends Sprite
{
protected var loader:Loader;
protected var request:URLRequest;

public function PicturesSlider()
{
super();
//Создаём таймер, который через каждые 5 секунд будет давать команду
//на загрузку новой картинки
var timer:Timer = new Timer(5000);

timer.addEventListener(TimerEvent.TIMER, timerListener);

//Создаём загрузчика
loader = new Loader();

//Создаём запрос для загрузчика
request = new URLRequest('http://flashtester.ru/ps/image_loader.php');

//Делаем запрос, на загрузку выбранной картинки
loadSlide();
timer.start();
}

protected function loadSlide():void
{
//Добавляем обработчик по событию завершения загрузки
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeListener);
loader.load(request);
}

private function completeListener(e:Event):void
{
var loadedBitmap:Bitmap = Bitmap(loader.content);
var originalBitmapData:BitmapData = loadedBitmap.bitmapData.clone();

//Расчитываем отношение сторон отображаемого экрана к загруженному рисунку,
//чтобы потом подогнать рисунок под размеры экрана
var scaleFactorWidth:Number = stage.stageWidth / originalBitmapData.width;
var scaleFactorHeight:Number = stage.stageHeight / originalBitmapData.height;

//Расчитываем новые высоту и ширину картинки
var newWidth:int = originalBitmapData.width * scaleFactorWidth;
var newHeight:int = originalBitmapData.height * scaleFactorHeight;

//Создаём новый объект BitmapData с расчитанными размерами
var scaledBitmapData:BitmapData = new BitmapData(newWidth, newHeight);

//Создаём матрицу
var scaleMatrix:Matrix = new Matrix();
scaleMatrix.scale(scaleFactorWidth, scaleFactorHeight);

//Заполняем изменяемую в размерах картинку в scaledBitmapData
scaledBitmapData.draw(originalBitmapData, scaleMatrix);

var newBitmap:Bitmap = new Bitmap(scaledBitmapData);

if (numChildren > 0) removeChildAt(0);

addChild(newBitmap);

//Удаляем прослушивание по Event.COMPLET, чтобы не занимать лишнюю память
loader.removeEventListener(Event.COMPLETE, completeListener);
}

private function timerListener(e:TimerEvent):void
{
loadSlide();
}

}
}


Скрипт http://flashtester.ru/ps/image_loader.php (flashtester.ru мой локальный сервер для экспериментов) динамически подгружает случайную картинку.

В http://flashtester.ru/ps/images собственно лежат .jpg картинки.

После того, как создаю .swf, подключаю его в http://flashtester.ru/ps/test.html

При открытии http://flashtester.ru/ps/test.html в FF флешка меняет картинки каждые 5 секунд.
При открытии страницы (и после активации флеш ролика) в IE загружается только одна картинка, так и остаётся.

Что я не так делаю?..