Показать сообщение отдельно
Старый 10.08.2014, 00:01
djken вне форума Посмотреть профиль Отправить личное сообщение для djken Посетить домашнюю страницу djken Найти все сообщения от djken
  № 1  
Ответить с цитированием
djken
 
Аватар для djken

Регистрация: May 2010
Адрес: Краснодар
Сообщений: 182
Отправить сообщение для djken с помощью ICQ Отправить сообщение для djken с помощью Skype™
Question Tween нормально срабатывает раз через раз

Всем привет. Почти дописал прогу. Отдал заказчику на тестирование, и тот говорит, что панели которые выезжают-заезжают по нажатию очень часто останавливаются на половине пути. Анимация у меня завязана на Tween'ах. Странно, но на машине, на которой пишу приложение, таких проблем не возникало. Решил попробовать протестировать приложение на нетбуке и убедился, выезжающая панель зависает иногда. В приложении у меня всего 3 панели и один раз было что они все одновременно замерли. В чем проблема не могу понять. В поисковиках ничего подобного не нарыл. Кто чего может подсказать?

Вот часть кода с главной выезжающей панелью mainMenu (вертикальное меню с левой стороны экрана). Подгружаю XML файл, в котором прописаны названия кнопок главного меню и всякая остальная дрябедень. Отображаю главное меню. По нажатию по кнопке tab меню выезжает-заезжает - метод showHide. Но почему иногда бывает не доезжает до нужной позиции???

Код AS3:
package  {
 
	import flash.display.Sprite;
	import flash.display.StageAlign;
	import flash.display.StageScaleMode;
	import flash.net.URLLoader;
	import flash.net.URLRequest;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import fl.transitions.Tween;
	import fl.transitions.easing.Regular;
	import fl.transitions.TweenEvent;
	import flash.events.TimerEvent;
	import flash.utils.Timer;
 
	public class Main extends Sprite {
 
		private var fileLoader:URLLoader;
		private var fileRequest:URLRequest;
		private var fileXml:XML;
		private var init:MainSlide;
		private var mainMenu:MainMenu;
		private var gamePanel:GamePanel;
		private var roundPanel:RoundPanel;
		private var helpPanel:HelpPanel;
		private var currGame;
		private var currQuestion;
 
		public function Main() {
			stage.align = StageAlign.TOP_LEFT;
			stage.scaleMode = StageScaleMode.NO_SCALE;
 
			fileLoader = new URLLoader();
			fileRequest = new URLRequest("file.xml");
			fileLoader.addEventListener(Event.COMPLETE, fileLoadComplete);
			fileLoader.load(fileRequest);
		}
 
		private function fileLoadComplete(e:Event):void {
			fileXml = new XML(e.target.data);
			init = new MainSlide();
			init.bg._w = init.bg.width;
			init.bg._h = init.bg.height;
			init.logo._w = init.logo.width;
			init.logo._h = init.logo.height;
			addChild(init);
			bgResize();
			logoResize();
			mainMenu = new MainMenu();
			mainMenu.autoHide = true;
			init.addChild(mainMenu);
 
			var btnGame:Object = {};
			for (var i=0; i<fileXml.children().length(); i++){
				btnGame[i] = new ButtonGame(i+1);
				btnGame[i].scaleX = btnGame[i].scaleY = 0.8;
				btnGame[i].x = 10;
				btnGame[i].y = i * (btnGame[i].height + 5) + 10;
				btnGame[i].name = i;
				mainMenu.mc.addChild(btnGame[i]);
				btnGame[i].addEventListener(MouseEvent.CLICK, mainMenu.showHide);
				btnGame[i].addEventListener(MouseEvent.CLICK, newGamePanel);
			}
 
			mainMenuResize();
			stage.addEventListener(Event.RESIZE, stageResize);
		}
 
		private function mainMenuResize():void {
			mainMenu.newHeight = stage.stageHeight;
		}
 
		private function bgResize():void {
			var koef1 = init.bg._w / init.bg._h;
			var koef2 = stage.stageWidth / stage.stageHeight;
			if (koef2 <= koef1){
				init.bg.scaleX = init.bg.scaleY = stage.stageHeight / init.bg._h;
			} else {
				init.bg.scaleX = init.bg.scaleY = stage.stageWidth / init.bg._w;
			}
			init.bg.x = stage.stageWidth / 2 - init.bg.width / 2;
			init.bg.y = stage.stageHeight / 2 - init.bg.height / 2;
		}
 
		private function logoResize():void {
			init.logo.scaleX = init.logo.scaleY = stage.stageHeight * 0.7 / init.logo._h;
			init.logo.x = stage.stageWidth / 2 - init.logo.width / 2;
			init.logo.y = stage.stageHeight / 2 - init.logo.height / 2;
		}
 
		private function stageResize(e:Event):void {
			bgResize();
			logoResize();
			mainMenuResize();
		}
 
	}
 
}
Код AS3:
package  {
 
	import flash.display.Sprite;
	import flash.events.MouseEvent;
	import flash.events.Event;
	import fl.transitions.Tween;
	import fl.transitions.easing.Regular;
 
	public class MainMenu extends Sprite {
 
		private var isOpen:Boolean;
 
		public function MainMenu() {
			autoHide = true;
 
			tab.addEventListener(MouseEvent.CLICK, showHide);
			tab.addEventListener(MouseEvent.ROLL_OVER, tabRollOver);
			tab.addEventListener(MouseEvent.ROLL_OUT, tabRollOut);
			tab.buttonMode = true;
		}
 
		public function set autoHide(b:Boolean):void {
			if (b){
				x = -90;
				isOpen = false;
				tab.arrow.scaleX = 1;
			} else { 
				x = 0;
				isOpen = true;
				tab.arrow.scaleX = -1;
			}
		}
 
		public function set newHeight(h:int):void {
			bg.height = h;
			tab.y = h / 2 - tab.height / 2;
		}
 
		public function showHide(e:MouseEvent):void {
			var _slideTo;
			if (isOpen == false){
				_slideTo = 0;
				isOpen = true;
				tab.arrow.scaleX = -1;
				stage.addEventListener(Event.ENTER_FRAME, moveButtons);
			} else {
				_slideTo = -90;
				isOpen = false;
				tab.arrow.scaleX = 1;
				stage.removeEventListener(Event.ENTER_FRAME, moveButtons);
			}
			new Tween(this, "x", Regular.easeOut, x, _slideTo, 0.5, true);
		}
 
		private function moveButtons(e:Event):void {
			if (mc.height > stage.stageHeight){
				var _perc = Math.round(stage.mouseY * 100 / stage.stageHeight);
				mc.y -= Math.round((mc.y - ((mc.height - stage.stageHeight + 10) * _perc / -100))/4);
			}
		}
 
		private function tabRollOver(e:MouseEvent):void {
			new Tween(e.target, "alpha", Regular.easeOut, e.target.alpha, 0.6, 0.2, true);
		}
 
		private function tabRollOut(e:MouseEvent):void {
			new Tween(e.target, "alpha", Regular.easeOut, e.target.alpha, 0.5, 0.2, true);
		}
	}
 
}
Миниатюры
Нажмите на изображение для увеличения
Название: Снимок экрана 2014-08-09 в 22.55.51.png
Просмотров: 139
Размер:	412.1 Кб
ID:	31083  
__________________
кто не отвечает, того garbage collector забирает