Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 16.10.2012, 01:26
Yulia_V вне форума Посмотреть профиль Отправить личное сообщение для Yulia_V Найти все сообщения от Yulia_V
  № 1  
Ответить с цитированием
Yulia_V

Регистрация: Sep 2012
Сообщений: 57
По умолчанию Объект перестаёт двигаться при перемещении мыши.

Здравствуйте, ситуация такая: у меня лента, выходящая за пределы экрана справа и слева, условно её можно разделить на 3 части, каждая часть оказавшись в экране подстраивается под него целиком (с помощью ТвинЛайта). А так же есть кнопка, которая по нажатии поднимает ленту наверх, а при повторном нажатии опускает вниз(!). До добавления твинлайтов в условие эта функция работала нормально. Теперь если после нажатия на кнопку мышь стоит неподвижно всё ок, но если в процессе поднятия сдвинуть мышь, то лента замирает, а кнопка ускакивает наверх/вниз.
Ниже участки кода и картинка.
Код AS3:
stage.addEventListener (MouseEvent.MOUSE_MOVE,onMoseMove);
function onMoseMove (e:MouseEvent):void
{
 
var position:Number = qw_mc.x
 
if(position <= 0){
    setURLLoader("text1.xml")
	var myTween3:TweenLite = new TweenLite(qw_mc, 2, {x:-275});
}else if(position <= 550 && position >0){   
    setURLLoader("text2.xml")
	var myTween4:TweenLite = new TweenLite(qw_mc, 2, {x:275});
}else if(position <= 1100 && position >550){    
    setURLLoader("text3.xml")
	var myTween5:TweenLite = new TweenLite(qw_mc, 2, {x:825});
 }
 
}
Код AS3:
play2_btn.visible = false;
 
play_btn.addEventListener(MouseEvent.CLICK, fl_MouseClickHandler);
 
function fl_MouseClickHandler(event:MouseEvent):void
 
{
	var myTween:TweenLite = new TweenLite(qw_mc, 1, {y:-100, ease:Quart.easeIn});
	var myTween:TweenLite = new TweenLite(play_btn, 1, {y:0, ease:Quart.easeIn});
	var myTween:TweenLite = new TweenLite(play2_btn, 1, {y:0, ease:Quart.easeIn});
	play2_btn.visible = true;
removeEventListener(MouseEvent.CLICK, fl_MouseClickHandler);
}
 
play2_btn.addEventListener(MouseEvent.CLICK, fl_MouseClickHandler2);
function fl_MouseClickHandler2(event:MouseEvent):void
{
	var myTween:TweenLite = new TweenLite(qw_mc, 1, {y:100, ease:Quart.easeIn});
	var myTween:TweenLite = new TweenLite(play_btn, 1, {y:200, ease:Quart.easeIn});
	var myTween:TweenLite = new TweenLite(play2_btn, 1, {y:200, ease:Quart.easeIn});
	play2_btn.visible = false;
removeEventListener(MouseEvent.CLICK, fl_MouseClickHandler2);
}
Миниатюры
Нажмите на изображение для увеличения
Название: нормально_ненормально.jpg
Просмотров: 95
Размер:	147.9 Кб
ID:	28574  

Старый 16.10.2012, 05:40
Isfet вне форума Посмотреть профиль Отправить личное сообщение для Isfet Найти все сообщения от Isfet
  № 2  
Ответить с цитированием
Isfet

Регистрация: Mar 2012
Адрес: г.Новосибирск
Сообщений: 381
Код AS3:
stage.addEventListener (MouseEvent.MOUSE_MOVE,onMoseMove);
function onMoseMove (e:MouseEvent):void
{
 
var position:Number = qw_mc.x
 
if(position <= 0){
    setURLLoader("text1.xml")
	var myTween3:TweenLite = new TweenLite(qw_mc, 2, {x:-275});
}else if(position <= 550 && position >0){   
    setURLLoader("text2.xml")
	var myTween4:TweenLite = new TweenLite(qw_mc, 2, {x:275});
}else if(position <= 1100 && position >550){    
    setURLLoader("text3.xml")
	var myTween5:TweenLite = new TweenLite(qw_mc, 2, {x:825});
 }
 
}
эта функция вызывается когда вы сдвигаете мышь, следовательно она и останавливает вашу полосу.
как я понимаю позиция полосы у вас <=0, значит вызывается этот твин
Код AS3:
if(position <= 0){
    setURLLoader("text1.xml")
	var myTween3:TweenLite = new TweenLite(qw_mc, 2, {x:-275});
}
следовательно проблема в нем

Старый 16.10.2012, 11:41
Yulia_V вне форума Посмотреть профиль Отправить личное сообщение для Yulia_V Найти все сообщения от Yulia_V
  № 3  
Ответить с цитированием
Yulia_V

Регистрация: Sep 2012
Сообщений: 57
Проблема определённо в нем, т.к. без него лента сворачивания и разворачивания отлично. Но что делать? Подгонка под кадр должна быть обязательно. Можно ли выполнить её другим способом?

Старый 16.10.2012, 13:13
Isfet вне форума Посмотреть профиль Отправить личное сообщение для Isfet Найти все сообщения от Isfet
  № 4  
Ответить с цитированием
Isfet

Регистрация: Mar 2012
Адрес: г.Новосибирск
Сообщений: 381
у вас так много твинов, я бы ввел переменную Boolean, которая стоит в false, становится true, когда один из твинов запускается, а когда он заканчивает действие переменная опять ставится в false. И все твины смотрят, если переменная false, значит можно запускаться.
Я так понял твины которые таскаю ленту вправо влево не должны работать когда лента убирается за экран, так введите переменную опять же Boolean которая будет true когда лента на stage, false когда лента начинает "ехать" вверх. А твины которые перетаскиваю ленту по Х, не могут таскать ее когда переменная в false.
что- то типо такого
Код AS3:
function onMoseMove (e:MouseEvent):void
{
   if(qw_mc_enabled){
         var position:Number = qw_mc.x
 
     if(position <= 0){
          setURLLoader("text1.xml")
	var myTween3:TweenLite = new TweenLite(qw_mc, 2, {x:-275});
     }else if(position <= 550 && position >0){   
         setURLLoader("text2.xml")
	var myTween4:TweenLite = new TweenLite(qw_mc, 2, {x:275});
     }else if(position <= 1100 && position >550){    
         setURLLoader("text3.xml")
	var myTween5:TweenLite = new TweenLite(qw_mc, 2, {x:825});
     }
   }
}

Старый 16.10.2012, 14:05
Yulia_V вне форума Посмотреть профиль Отправить личное сообщение для Yulia_V Найти все сообщения от Yulia_V
  № 5  
Ответить с цитированием
Yulia_V

Регистрация: Sep 2012
Сообщений: 57
Но если у меня твины внитри функций как они передадут друг другу значения переменной Boolean (допустим если я выставляю его при onComplete)?
Что вы имеете в виду под qw_mc_enabled?
Извините, я ещё много не понимаю, недавно начала изучать язык.

Старый 16.10.2012, 14:21
Isfet вне форума Посмотреть профиль Отправить личное сообщение для Isfet Найти все сообщения от Isfet
  № 6  
Ответить с цитированием
Isfet

Регистрация: Mar 2012
Адрес: г.Новосибирск
Сообщений: 381
Цитата:
Сообщение от Yulia_V Посмотреть сообщение
Но если у меня твины внитри функций как они передадут друг другу значения переменной Boolean (допустим если я выставляю его при onComplete)?
переменная должна задаваться вне функции:
Код AS3:
var var1:Boolean = false;
changeVarValueToTrue();
trace(var1); //true
changeVarValueToFalse();
trace(var1);//false
function changeVarValueToTrue ():void{
    var1 = true;
}
function changeVarValueToFalse ():void{
    var1 = false;
}
qw_mc_enabled должно хранить значение, можно ли использовать твины или нет. Лента неактивна - твины которые запускаются от движения мыши не работают

Старый 16.10.2012, 15:05
Yulia_V вне форума Посмотреть профиль Отправить личное сообщение для Yulia_V Найти все сообщения от Yulia_V
  № 7  
Ответить с цитированием
Yulia_V

Регистрация: Sep 2012
Сообщений: 57
Теоретически понятно, но не получается пока. Буду думать дальше как это употребить.

Добавлено через 2 часа 32 минуты
Не получается, может что-то не туда пишу?
Trace одновременно выводит true и false.
Код AS3:
stage.addEventListener (MouseEvent.MOUSE_MOVE,onMoseMove);
function onMoseMove (e:MouseEvent):void
{
 
var position:Number = qw_mc.x
 if(var1 == false){
if(position <= 0){
    setURLLoader("text1.xml")
	var myTween3:TweenLite = new TweenLite(qw_mc, 2, {x:-275});
}else if(position <= 550 && position >0){   
    setURLLoader("text2.xml")
	var myTween4:TweenLite = new TweenLite(qw_mc, 2, {x:275});
}else if(position <= 1100 && position >550){    
    setURLLoader("text3.xml")
	var myTween5:TweenLite = new TweenLite(qw_mc, 2, {x:825});
 }
 
}
}
Код AS3:
var var1:Boolean = false;
trace (var1);
 
function changeVarValueToTrue ():void{
    var1 = true;
	trace(var1);
}
function changeVarValueToFalse ():void{
    var1 = false;
	trace(var1);
}
 
 
play2_btn.visible = false;
 
play_btn.addEventListener(MouseEvent.CLICK, fl_MouseClickHandler);
function fl_MouseClickHandler(event:MouseEvent):void
 
{
 
	var myTween:TweenLite = new TweenLite(qw_mc, 1, {y:-100, ease:Quart.easeIn, onStart:changeVarValueToTrue(), 
										  onComplete:changeVarValueToFalse()});
	var myTween:TweenLite = new TweenLite(play_btn, 1, {y:0, ease:Quart.easeIn});
	var myTween:TweenLite = new TweenLite(play2_btn, 1, {y:0, ease:Quart.easeIn});
	play2_btn.visible = true;
removeEventListener(MouseEvent.CLICK, fl_MouseClickHandler);
}
 
play2_btn.addEventListener(MouseEvent.CLICK, fl_MouseClickHandler2);
function fl_MouseClickHandler2(event:MouseEvent):void
{
 
	var myTween:TweenLite = new TweenLite(qw_mc, 1, {y:100, ease:Quart.easeIn, onStart:changeVarValueToTrue(),
										  onComplete:changeVarValueToFalse()});
	var myTween:TweenLite = new TweenLite(play_btn, 1, {y:200, ease:Quart.easeIn});
	var myTween:TweenLite = new TweenLite(play2_btn, 1, {y:200, ease:Quart.easeIn});
	play2_btn.visible = false;
removeEventListener(MouseEvent.CLICK, fl_MouseClickHandler2);
}
Добавлено через 6 часов 2 минуты
На меня неожиданно снизошло просветление и всё заработало. Если кому-то интересно, то сейчас выглядит так:

Код AS3:
stage.addEventListener (MouseEvent.MOUSE_MOVE,onMoseMove);
function onMoseMove (e:MouseEvent):void
{
 
var position:Number = qw_mc.x
 if(var1 == false){
if(position <= 0){
    setURLLoader("text1.xml")
	var myTween3:TweenLite = new TweenLite(qw_mc, 2, {x:-275});
}else if(position <= 550 && position >0){   
    setURLLoader("text2.xml")
	var myTween4:TweenLite = new TweenLite(qw_mc, 2, {x:275});
}else if(position <= 1100 && position >550){    
    setURLLoader("text3.xml")
	var myTween5:TweenLite = new TweenLite(qw_mc, 2, {x:825});
 }
 
}
removeEventListener(MouseEvent.CLICK, onMoseMove);
}
Код AS3:
var var1:Boolean = false;
trace (var1);
 
function changeVarValueToTrue ():void{
    var1 = true;
	trace(var1);
}
function changeVarValueToFalse ():void{
    var1 = false;
	trace(var1);
}
 
 
play2_btn.visible = false;
 
play_btn.addEventListener(MouseEvent.CLICK, fl_MouseClickHandler);
function fl_MouseClickHandler(event:MouseEvent):void
 
{
 
	var myTween:TweenLite = new TweenLite(qw_mc, 1, {y:-100, ease:Quart.easeIn, onUpdate:changeVarValueToTrue()});
	var myTween:TweenLite = new TweenLite(play_btn, 1, {y:0, ease:Quart.easeIn});
	var myTween:TweenLite = new TweenLite(play2_btn, 1, {y:0, ease:Quart.easeIn});
	play2_btn.visible = true;
	event.updateAfterEvent	();
 
}
 
play2_btn.addEventListener(MouseEvent.CLICK, fl_MouseClickHandler2);
function fl_MouseClickHandler2(event:MouseEvent):void
{
 
	var myTween:TweenLite = new TweenLite(qw_mc, 1, {y:100, ease:Quart.easeIn, onComplete:changeVarValueToFalse});
	var myTween:TweenLite = new TweenLite(play_btn, 1, {y:200, ease:Quart.easeIn});
	var myTween:TweenLite = new TweenLite(play2_btn, 1, {y:200, ease:Quart.easeIn});
	play2_btn.visible = false;
	event.updateAfterEvent	();
 
}


Последний раз редактировалось Yulia_V; 16.10.2012 в 18:51.
Создать новую тему Ответ Часовой пояс GMT +4, время: 02:15.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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