Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Переназначение типа (http://www.flasher.ru/forum/showthread.php?t=175363)

peopleofdesign 15.02.2012 15:32

Переназначение типа
 
Привет всем.

Проблема у меня в следующем.
Есть слайдшоу. Работает отлично, но не правильно реагирует на изменение размеров окна.
Каждую картинку массивом загоняю в контейнер типа 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, ошибка пропала, но анимация слайдшоу не работает, происходит тупо переключение и всё.

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

Спасибо.

Inet_PC 15.02.2012 15:37

Вместо
Цитата:

public static function resizeBg(obj:Sprite,w:Number,h:Number):void
Код AS3:

public static function resizeBg(obj:DisplayObject,w:Number,h:Number):void

Не очень понятно, что Вы хотите.

Genzo 15.02.2012 15:37

Код AS3:

public static function resizeBg(obj:DisplayObject,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;
}

Цитата:

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

peopleofdesign 15.02.2012 15:50

Если я в resizeBg поставлю тип входящий DisplayObject, то по неясным мне причинам анимация слайдшоу не работает, происходит просто переключение картинки.
Анимация делается TweenMax'ом.
Сначала уезжает текущая картинка, и сразу приезжает следующая картинка.

Genzo 15.02.2012 15:53

Как говориться : код в студию

peopleofdesign 15.02.2012 15:57

Какой вам ещё код нужен ? (я не с претензией, а именно вопрос какой код дать, не весь же сайт буду выкладывать).
привел код ресайзера и код прохода по контейнеру.

Inet_PC 15.02.2012 16:01

Видимо код запуска анимации

peopleofdesign 15.02.2012 16:04

Всё, ) проблему нашёл... в ненужном месте вызывался ещё ресайзер...

Сори, что потратил ваше время. Спасибо за внимание.


Часовой пояс GMT +4, время: 23:10.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.