Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   проблема с Tween и LoadClip (http://www.flasher.ru/forum/showthread.php?t=124669)

in4core 05.05.2009 21:46

проблема с Tween и LoadClip
 
Ребят такая проблема Данные беруться из XML ( а точнее ширина , высота и путь откуда грузится картинка ). И так выглядет все вот как : контейнер 100*100 (клип) в нутри которого клип куда грузится картинка. в коде так : _root.contt - контейнер 100*100, _root.contt.d1 - куда грузим. Проблема такая при нажатии на мелкую картинку происходят события типа клип _root.contt приобретает ширину и высоту картинки большой например 800*600, после всего Transition периода начинается загрузка картинки в клип, и ПОЧЕМУ ТО после загрузки картинка становится не 800*600 как должна быть а скажем 2500*2000 ну короче растягивается жутко.... и не равна основному мувику _root.cont, видимо проблема с transition но что именно и как я так и не сумел понять.

П.с. _root.contt - точка привязки в центре. _root.contt.d1 - точка привязки top-left

Вот код для наглядности ( код возможно ужасен, буду не против если есть другой метод создания эффекта Zoom а потом загрузки)

Код:

_level0.main["g"+j].container_small.ID = j;
                        _level0.main["g"+j].container_small.onRelease = function() {
                                       
        var link = this;
                                _root.contt._visible = true;
                               
                                _root.contt._width = wei[this.ID];
                                _root.contt._height = hei[this.ID];

                                TransitionManager.start(_root.contt,{type:Zoom, direction:Transition.IN, duration:1, easing:Regular.easeOut});



                                _root.contt.allTransitionsInDone = function() {
                                       
                                       
                                        var v_obj:Object = new Object();
                                        var my_v:MovieClipLoader = new MovieClipLoader();
                                        v_obj.onLoadStart = function(target_mc:MovieClip) {  }
                                        my_v.addListener(v_obj);
                                       
                                        my_v.loadClip(Vizual[link.ID],_level0.contt.d1);
                                       
                                };
                        };

Переменные поясняю -
j - переменная цикла выбирающая нужную картинку из массива. массива - Vizual
wei и hei соответсвенно массивы со значениями разрешения картинки например wei = 800 , hei = 640

Wolsh 05.05.2009 23:18

Ну так Вы же сами увеличили контейнер в 8 раз. И картинка увеличилась бы в 8 раз, если бы не ограничения плеера на размер))) Параметры _xscale и _yscale контейнера посмотрите.

in4core 05.05.2009 23:52

ну так подскажите пожалуйста как сделать чтобы ресайзился только один клип а другой внутри него нет. :(

Вот переписал под себя немного как хотел проблема теперь не увеличения стала а уменьшения и т.д. вот коl
Код:


_level0.main["g"+j].container_small.onRelease = function() {
                                       
        var link = this;
                                _root.contt._visible = true;
                               
                               
                               
                                var tween_handler:Tween = new Tween(_root.contt, "_width", Strong.easeIn, _root.contt._width, wei[link.ID], 1, true);
                                var tween_handler:Tween = new Tween(_root.contt, "_height", Strong.easeIn, _root.contt._height, hei[link.ID], 1, true);
                                tween_handler.onMotionFinished = function() {
                               
                               
                                        var v_obj:Object = new Object();
                                        var my_v:MovieClipLoader = new MovieClipLoader();
                                        v_obj.onLoadProgress = function(target_mc:MovieClip) {  }
                                        my_v.addListener(v_obj);
                                       
                                        my_v.loadClip(Vizual[link.ID],_level0.contt.d1);
 
                                };


                        };

my_v.loadClip(Vizual[link.ID],_level0.contt.d1); тоесть чтобы этот гнусный d1 не ресайзился. Хотя мне как новечку непонятен тот факт что допустим я нарисую маску-контейнер 1000*1000 и буду грузить туда картинку 15*20 то она загрузится в 100% соотношении а не станет под стать 1000*1000, а тут поидее тоже без разницы ведь ресайз идет до загрузки а не после! выходит что поидее так же должно быть 100% соотношения. Поясните этот факт тоже и как все решить
Заранее спасибо

П.с. была другая идея грузить картинку из клипа выше этого тоесть на _level0 любого чтобы ниче не ресайзилось. но тогда я просто не поймаю _x и _y клипа ведь картинка должна равнятся его координатам. Почему не поймаю ? потому что как уже написал выше точка привязки в центре клипа а Top-Left сделать нельзя тогда эффект твина будет не из центра !

Wolsh 06.05.2009 02:16

Отказываюсь понимать Вашу логику - фактически Вы хотите, чтобы свойства внешнего клипа не распространялись на его внутренний клип. Причем не все, а избирательно только скейлы, а вот скажем координаты - те пусть остаются как есть. Вам как новичку объясню непонятный факт - нарисуете Вы контейнер 1000х1000 и загрузите туда картинку. Его масштаб остался 100% - так с чего бы картинке изменять свои размеры? Она тоже имеет масштаб 100%. Но здесь в своем коде Вы именно меняете масштаб контейнера, и все что внутри будет также массштабироваться. Какие пути исправления? Их два.
1) Не массштабировать контейнер. Я не знаю, зачем Вы это делаете - он видимо не пустой, Вы же делаете какой-то эффект, что-то увеличивается при этом. Так вот и увеличивайте тогда не контейнер, а это что-то ВНУТРИ контейнера. Тогда массштаб самого контейнера не изменится.
2) ОК, Вам очень нужно массштабировать именно контейнер - тогда после загрузки отмассштабируйте картинку обратно, сделав ее 100%.

Добавлено через 11 минут
Да, надо вообще Вам почитать в хелпе про _xscale и _yscale - в этом проекте Вам без них не обойтись. Если изберете второй путь, Вам придется также рассчитывать координаты с учетом этих двух свойств. Поэтому рекомендую всеже сделать ту графику, что всегда у Вас в контейнере, отдельным клипом и менять его размеры, тогда хоть с координатами картинки мороки не будет. Удачи и спокойствия))


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

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