Показать сообщение отдельно
Старый 15.02.2012, 15:32
peopleofdesign вне форума Посмотреть профиль Отправить личное сообщение для peopleofdesign Найти все сообщения от peopleofdesign
  № 1  
Ответить с цитированием
peopleofdesign

Регистрация: Mar 2009
Сообщений: 7
Question Переназначение типа

Привет всем.

Проблема у меня в следующем.
Есть слайдшоу. Работает отлично, но не правильно реагирует на изменение размеров окна.
Каждую картинку массивом загоняю в контейнер типа Sprite.

для изменения размеров написал мелкий класс, который вызываю с параметрами.
Код AS3:
public static function resizeBg(obj:Sprite,w:Number,h:Number):void
{
	obj.x=0;
	obj.y=0;
	obj.width=w;
	obj.height=h;
	(obj.scaleX > obj.scaleY) ? obj.scaleY = obj.scaleX : obj.scaleX = obj.scaleY;
}
При изменении окна меняю размеры моего контейнера. При этом возникает косяк, картинки не правильно получают размер окна и слетают. По координатам всё норм, но вот по ширине и высоте - глюк.

Тогда мне посоветовали в функции которая срабатывает при изменении окна менять размеры не контейнера, а каждого элемента в нём.. Проходиться циклом по контейнеру и менять размер, вот как:
Код AS3:
for (var i:int = 0; i < _imgHolder.numChildren; i++) {
	var currentChild:DisplayObject = _imgHolder.getChildAt(i) as Sprite;
	Resizer.resizeBg(currentChild, Main.instance.stage.stageWidth, Main.instance.stage.stageHeight);
}
_imgHolder - это контейнер, у которого тип Sprite
Resizer - это и есть класс, который отвечает за изменение размеров.
Таким образом у меня получается ошибка о назначении типов.
Код:
1118: Implicit coercion of a value with static type flash.display:DisplayObject to a possibly unrelated type flash.display:Sprite.
Попробовал в Resize не задавать явный тип для currentChild, ошибка пропала, но анимация слайдшоу не работает, происходит тупо переключение и всё.

Скажите пожалуйста как правильнее и как лучше сделать так, чтобы не соскакивали размеры картинок при изменении размера окна, и чтобы не было ошибки.?

Спасибо.