![]() |
|
||||||||||
|
|||||
|
Регистрация: Sep 2012
Сообщений: 57
|
Здравствуйте, подскажите пожалуйста почему флешка тормозит? Особенно это заметно после нескольких циклов. Пыталась разгрузить её путём остановки анимации за пределами видимой зоны, но как-то не очень помогло.
Флешка вложена. Если кто-нибудь захочет могу скинуть исходник 7 мб. Вот код: import flash.geom.Rectangle; import flash.events.MouseEvent; import flash.sensors.Accelerometer; import com.greensock.*; import com.greensock.easing.*; import flash.events.Event; import flash.events.MouseEvent; var bounds:Object = {left:-2926, right:1263}; var currentX:Number = qw_cont.x; var lastX:Number = qw_cont.x; var vx:Number = 0; var isDragging:Boolean = false; var offset:Number; qw_cont.buttonMode = true; var timeline:TimelineLite; addEventListener(Event.ENTER_FRAME, loop); qw_cont.addEventListener(MouseEvent.MOUSE_DOWN, onDown); addEventListener(MouseEvent.MOUSE_UP, onUp); function loop (e:Event):void { if (isDragging == true) { lastX = currentX; currentX = mouseX; vx = currentX - lastX; } } function onDown (e:MouseEvent):void { isDragging = true; offset = qw_cont.mouseX; addEventListener(MouseEvent.MOUSE_MOVE, onMove); } function onMove(e:MouseEvent):void { qw_cont.x = mouseX - offset; if (qw_cont.x <= bounds.left) qw_cont.x = bounds.left; else if (qw_cont.x >= bounds.right) qw_cont.x = bounds.right; e.updateAfterEvent(); } function onUp(e:MouseEvent):void { isDragging = false; removeEventListener(MouseEvent.MOUSE_MOVE, onMove); e.updateAfterEvent(); } //Подгонка ленты под границы кадра addEventListener (Event.ENTER_FRAME,onMoseMove); function onMoseMove (e:Event):void { var position:Number = qw_cont.x if(position <= 0 && position >-842){ var myTween3:TweenLite = new TweenLite(qw_cont, 0.7, {x:-421}); }else if(position <= 842 && position >0){ var myTween4:TweenLite = new TweenLite(qw_cont, 0.7, {x:421}); }else if(position <= 1263 && position >842){ var myTween5:TweenLite = new TweenLite(qw_cont, 0.7, {x:1263}); }else if(position <= -842 && position >-1684){ var myTween6:TweenLite = new TweenLite(qw_cont, 0.7, {x:-1263}); }else if(position <= -1684 && position >-2526){ var myTween7:TweenLite = new TweenLite(qw_cont, 0.7, {x:-2105}); }else if(position <= -2526 && position >-2926){ var myTween8:TweenLite = new TweenLite(qw_cont, 0.7, {x:-2926}); } // Остановка/запуск анимации в конкретном кадре addEventListener(Event.ENTER_FRAME, loop2); function loop2 (e:Event):void { if (isDragging == false) { // 1 кадр if (position <= 1263 && position >842) { var myObject1:player = new player(); myObject1.playAll(qw_cont.qw_mc.odin); TweenLite.to(qw_cont.vremya, 1, {alpha:0.69}); }else{ var myObject:stopper = new stopper(); myObject.stopAll(qw_cont.qw_mc.odin); TweenLite.to(qw_cont.vremya, 1, {alpha:0}); } if (qw_cont.vremya.alpha == 0) { qw_cont.vremya.gotoAndStop(0); } // 2 кадр if (position <= 842 && position >0) { var myObject3:player = new player(); myObject3.playAll(qw_cont.qw_mc.dva); }else{ var myObject4:stopper = new stopper(); myObject4.stopAll(qw_cont.qw_mc.dva); } // 3 кадр if (position <= 0 && position >-842) { var myObject6:player = new player(); myObject6.playAll(qw_cont.qw_mc.tri); }else{ var myObject5:stopper = new stopper(); myObject5.stopAll(qw_cont.qw_mc.tri); } // 4 кадр if (position <= -842 && position >-1684) { var myObject7:player = new player(); myObject7.playAll(qw_cont.qw_mc.chetyre); }else{ var myObject8:stopper = new stopper(); myObject8.stopAll(qw_cont.qw_mc.chetyre); } } } } // Здесь будут описаны объекты-кнопки: qw_cont.vremya.gotoAndStop(0); //При нажатии на фонарь запускается анимация "времена суток" qw_cont.fonar_mc.addEventListener(MouseEvent.CLICK, oMClick); function oMClick(e:MouseEvent):void { qw_cont.vremya.play(); } package { import flash.display.*; public class stopper { public function stopper() { // constructor code } public function stopAll(obj:DisplayObject):void { if (!obj) return; if (obj is MovieClip) (obj as MovieClip).stop(); var objContainer:DisplayObjectContainer = obj as DisplayObjectContainer; if (objContainer) { for (var i:int = 0; i < objContainer.numChildren; i++ ) { stopAll(objContainer.getChildAt(i)); } } } } } Последний раз редактировалось Yulia_V; 14.12.2012 в 15:04. |
|
|||||
|
Регистрация: Sep 2012
Сообщений: 57
|
Извините, выложила.
|
|
|||||
|
Регистрация: Sep 2012
Сообщений: 57
|
Спасибо) Уже прикрепила)
|
|
|||||
|
блогер
Регистрация: Feb 2008
Адрес: Россия, Новосибирск, Академгородок
Сообщений: 2,113
Записей в блоге: 1
|
Если посмотреть область прорисовки, то будет видно, что обновляется почти вся площадь флэшки. Запускайте анимацию только показываемого блока, а те, что не видны — останавливайте.
Да и с промоткой как-то неудачно сделано, кстати. Дергается. Можете еще поэксперементировать с выключением сглаживания для фоновой картинки.
__________________
hauts.ru |
|
|||||
|
Регистрация: Sep 2012
Сообщений: 57
|
Цитата:
Да, полоса дёргается, я планирую это поправить в будущем. С выключенным сглаживанием плохо, при промотке пикселы начинают друг на друга наезжать. |
|
|||||
|
Регистрация: Dec 2012
Сообщений: 20
|
отличный арт
|
|
|||||
|
Регистрация: Sep 2012
Сообщений: 57
|
FiftyStars
Спасибо. В этом и есть проблема. Я художник, и с программированием раньше не сталкивалась. А на дипломную работу решила взять дизайн для компьютерного приложения. |
![]() |
![]() |
Часовой пояс GMT +4, время: 03:42. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|