![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Sep 2011
Сообщений: 366
|
Вообщем есть движение Tween которое двигает ряд подгружаемых картинок если во время движения нажать на кнопку которая добавляет addchild новый муви клип на сцену и посылает запрос на сервер то движение прекращается не дойдя до конца. В чём может быть причина кто знает?
вот код если кому надо но его много и в нём трудно разобраться х) private function tween (obj:Object,zn:String,znach:Number,zkon:Number){ var tw:Tween = new Tween(obj,zn,Strong.easeIn,znach,zkon,LentaSpeed,true); trace("tween"+LentaSpeed); } private function tweenNew (obj:Object,zn:String,znach:Number,zkon:Number,timer:Number){ var tw:Tween = new Tween(obj,zn,Strong.easeIn,znach,zkon,timer,true); _switch++; // переключатель массива получаемых фоток tw.addEventListener(TweenEvent.MOTION_FINISH,tweenEvent ); } // функция загрузки private function ldf (f:String) { var foto:Loader = new Loader; foto.load(new URLRequest(f)); // здесь нужно загружать фото //foto.contentLoaderInfo.addEventListener(Event.COMPLETE, addFotoLenta); foto.contentLoaderInfo.addEventListener(Event.COMPLETE, adding); foto.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, error); function error (){ var loadingFoto:loadFoto = new loadFoto; addFotoLenta(loadingFoto); } function adding (){ addFotoLenta(foto); } // добавляет фото на ленту function addFotoLenta(foto:DisplayObject):void { if (foto.width > 100){ foto.width=100; foto.scaleY = foto.scaleX; } if (foto.height>100){ foto.height=100; foto.scaleX = foto.scaleY; } var fotoMovie:MovieClip = new MovieClip; foto.name = "foto"; fotoMovie.addChild(foto); ifoto[nFoto] = fotoMovie; if (nFoto>0){ var n:Number; for (n=lastElement;n<nFoto;n++){//двигает элементы tween (ifoto[n],"x",ifoto[n].x,ifoto[n].x+ifoto[nFoto].width+3); //удаляет элемнты if(ifoto[n].x>1000){ sprLenta.removeChild(ifoto[n]); ifoto[n] = null; lastElement++; }} if(n==nFoto){ // когда все передвинуты добавялем новую фотку ifoto[nFoto].x = -ifoto[nFoto].width; ifoto[nFoto].y = 100-ifoto[nFoto].height; addLentaAtribute(fotoMovie);// функция добавляет атрибуты к фотографиям sprLenta.addChild(ifoto[nFoto]); tweenNew(ifoto[nFoto],"x",-ifoto[nFoto].width,0, LentaSpeed);} } spLenta.addChild(sprLenta); nFoto++; } //addFotoLenta }//конец ldf private function lentaFirst():void { // когда загружаем ленту первый раз ldfoto(lentaFoto[_switch].@foto); function ldfoto (f:String) { //trace ("свич"+_switch+"login"+lentaFoto[_switch].@login); var foto:Loader = new Loader; foto.load(new URLRequest(f)); // здесь нужно загружать фото foto.contentLoaderInfo.addEventListener(Event.COMPLETE, adding); foto.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, error); function error (){ var loadingFoto:loadFoto = new loadFoto; addFirst(loadingFoto); } function adding (){ addFirst(foto); } function addFirst (foto:DisplayObject):void{ if (foto.width > 100){ foto.width=100; foto.scaleY = foto.scaleX; } if (foto.height>100){ foto.height=100; foto.scaleX = foto.scaleY; } var fotoMovie:MovieClip = new MovieClip; foto.name = "foto"; fotoMovie.addChild(foto); fotoMovie.x =prvWidth+prvX+3; fotoMovie.y = 100-fotoMovie.height; prvWidth = fotoMovie.width; prvX = fotoMovie.x; addLentaAtribute(fotoMovie);// функция добавляет атрибуты к фотографиям SpriteFirst.name = "SpriteFirst"; SpriteFirst.addChild(fotoMovie); _switch++; if(nLenta >_switch) {ldfoto(lentaFoto[_switch].@foto);} else{ifoto[nFoto] = SpriteFirst; _switch--; sprLenta.addChild(SpriteFirst); spLenta.addChild(sprLenta); tweenNew(ifoto[nFoto],"x",-ifoto[nFoto].width,-3, 1); nFoto++; firstLoad=false; idLentaFoto=lentaFoto[0].@id; } } }//ldf }//lentaFirst |
|
|||||
|
Lorem ipsum
|
Вот корень проблемы:
Локальная ссылка прибивается сборщиком мусора. Делай поле класса. Это будет либо ссылка на единственный активный экземпляр Tween, либо массив со всеми текущими ссылками на активные экземпляры Tween. По MOTION_FINISH ссылки удалять. Однажды мне показали Eaze Tween и я забыл весь этот морок.
__________________
Поймай яблоко 2! |
|
|||||
|
Регистрация: Sep 2011
Сообщений: 366
|
А что значит делать поле класса? пример можно, а то я не очень про х)
А если спользовать Eaze Tween и тупо его заменить в двух функциях то будет работать норм без всяких лагов или тоже что-то удалять надо? |
|
|||||
|
Lorem ipsum
|
Поле класса, это переменная, которая объявлена в самом верху внутри класса, как-то так:
И заменяешь: Если заменить нативный твинер на Eaze Tween, то достаточно будет только поменять в двух функциях, да.
__________________
Поймай яблоко 2! |
|
|||||
|
Регистрация: Sep 2011
Сообщений: 366
|
Цитата:
|
|
|||||
|
.
|
Цитата:
- Область видимости Class:
- constants:
private/protected/public constants.
- properties:
public properties (getter/setter)
public properties (variables)
-methods
overridden:
-public
-protected
public
protected
private
- отдельно стоят calss event handlers
- Constructor
- Область видимости this (поля объекта):
- constants:
private/protected/public constants.
- properties:
public properties (getter/setter)
public properties (variables)
- other variables/constants
protected
private
-methods
overridden:
-public
-protected
public
protected
private
- отдельно стоят event handlers
|
|
|||||
|
Lorem ipsum
|
Он вроде не бесплатный. Да и Eaze Tween весьма хорош, почему нет?
__________________
Поймай яблоко 2! |
|
|||||
|
[+4 06.05.14]
|
Что значит не бесплатный? бесплатный. Все, что свободно качается, тем более с сайта производителя = бесплатно. Потом докажи. Поэтому это бред, считать его не бесплатным.
Не бесплатно - игра, которую залили на торренты без разрешения производителя, здесь же - производитель сам дает возможность скачать оффициально. О чем речь вообще.
__________________
Марк Tween |
|
|||||
|
Lorem ipsum
|
__________________
Поймай яблоко 2! |
![]() |
![]() |
Часовой пояс GMT +4, время: 22:36. |
|
|
« Предыдущая тема | Следующая тема » |
|
|