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

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

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

Регистрация: Mar 2009
Сообщений: 122
Question нажатие и нажатие с перетаскиванием

move clip, в нем содержутся еще клипы.
при нажатии и перетаскивании они должны вертикально перемещаться. здесь никаких проблем.
но при нажатии и отпускании (без перетаскивания) должен происходить уже другой код. но однаременно не работает. что посоветуете?

Старый 19.09.2010, 17:22
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 2  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Допустим, таскаем (или не таскаем) мувик mc. Тогда:
Код AS1/AS2:
var y0:Number ;
 
mc.onPress = function  () 
{
	this.startDrag(); // + ваши параметры таскания
	y0 = this._y ;
};
 
mc.onRelease = function  () 
{
	this.stopDrag();
	if (y0 - this._y == 0)
	{
		someFunc();
	}
};
 
function someFunc() 
{
	trace('Не было перемещения');
}

Для нескольких мувиков с произвольными именами, содержащимися внутри мувика-контейнера cont_mc:
Код AS1/AS2:
var y0:Number ;
 
for (i in cont_mc) 
{
	var mc:MovieClip = cont_mc[i];
	mc.onPress = mcOnPress;
	mc.onRelease = mcOnRelease;
}
 
 
function mcOnPress() 
{
	this.startDrag();// + ваши параметры таскания
	y0 = this._y ;
}
 
function mcOnRelease() 
{
	this.stopDrag();
	if (y0 - this._y == 0)
	{
		someFunc(this);
	}
}
 
function someFunc(mc:MovieClip) 
{
	trace('Трогали ' + mc + ' но перемещения не было');
}
__________________
Идите первым!


Последний раз редактировалось mooncar; 19.09.2010 в 17:34.
Старый 19.09.2010, 19:10
alex001 вне форума Посмотреть профиль Отправить личное сообщение для alex001 Найти все сообщения от alex001
  № 3  
Ответить с цитированием
alex001

Регистрация: Mar 2009
Сообщений: 122
я не совсем понял что значит это:
Код AS1/AS2:
for (i in cont_mc) 
{
	var mc:MovieClip = cont_mc[i];
	mc.onPress = mcOnPress;
	mc.onRelease = mcOnRelease;
}

Старый 19.09.2010, 19:17
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 4  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Это значит, что мы перебираем циклом все мувики внутри контейнера cont_mc, они перебираются автоматически без указания имени. Удобно, если в контейнере кроме них ничего нет, и на все нужно повесить какие-то обработчики или задать свойства.
Такая запись позволяет не думать об именах и количестве, чистое удобство.
Эквивалентно простому циклу, например, если имена мувиков конкретно mc1, mc2..., а количество, например, 10:
Код AS1/AS2:
for (i = 1; i <=  10; i++) 
{
	var mc:MovieClip = cont_mc['mc' + i];
	mc.onPress = mcOnPress;
	mc.onRelease = mcOnRelease;
}
__________________
Идите первым!

Старый 19.09.2010, 19:32
alex001 вне форума Посмотреть профиль Отправить личное сообщение для alex001 Найти все сообщения от alex001
  № 5  
Ответить с цитированием
alex001

Регистрация: Mar 2009
Сообщений: 122
Код AS1/AS2:
onClipEvent (enterFrame) {
	var y0:Number;
 
	for (i = 1; i <= 12; i++)
	{
		var mc:MovieClip = this['ch' + i];
		mc.onPress = mcOnPress;
		mc.onRelease = mcOnRelease;
	}
 
	function mcOnPress()
	{
		this.startDrag(false,this._x,168.05,this._x,-2500);
		y0 = this._y;
	}
 
	function mcOnRelease()
	{
		this.stopDrag();
		if (y0 - this._y == 0)
		{
			someFunc(this);
		}
	}
 
	function someFunc(mc:MovieClip)
	{
		trace('Трогали ' + mc + ' но перемещения не было');
	}
}
все работает кроме таскания. при таскании он видет, что это таскание, а не нажимание, но таскания не происходит. я что-то не так делаю?

Старый 19.09.2010, 19:58
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 6  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Запись кода на объекте - это уже нонсенс, в результате пути не те.
Многократное назначение функций с помощью onClipEvent (enterFrame). Ужас.
Смотрите пример.
Вложения
Тип файла: rar Умный драг.rar (5.0 Кб, 48 просмотров)
__________________
Идите первым!


Последний раз редактировалось mooncar; 19.09.2010 в 20:01.
Старый 19.09.2010, 20:09
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 7  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Вот еще что. Строку замените на такую:
Код AS1/AS2:
mc.onRelease = mc.onReleaseOutside = mcOnRelease;
Иначе после нажатия на мувике и отпускание мыши вне мувика не остановит драг.
__________________
Идите первым!

Старый 19.09.2010, 23:08
alex001 вне форума Посмотреть профиль Отправить личное сообщение для alex001 Найти все сообщения от alex001
  № 8  
Ответить с цитированием
alex001

Регистрация: Mar 2009
Сообщений: 122
нашол одну проблему. пользователь может потащить выше чем можно, клип останиться на месте, а даже если он двигал мышью все равно сработает someFunc(), чего бы не хотелось. как исправить этот косяк?

Старый 20.09.2010, 00:10
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 9  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Не заметил. Нету такого, если правильно задать пределы. startDrag работает точно по заданным пределам.
Укажите условия, при которых "пользователь может потащить выше чем можно".
Вложения
Тип файла: rar drag2.rar (4.4 Кб, 53 просмотров)
__________________
Идите первым!

Старый 20.09.2010, 23:01
alex001 вне форума Посмотреть профиль Отправить личное сообщение для alex001 Найти все сообщения от alex001
  № 10  
Ответить с цитированием
alex001

Регистрация: Mar 2009
Сообщений: 122
я наверное неточно выразился.
если дотощить клип до самого верха, и начать тащить еще выше(а он разумеется дальше не поедет) то 'Трогали mc но перемещения не было' все равно вылезет.
Цитата:
пользователь может потащить выше чем можно
я имел в виду, что он может этого захтеть и тогда сработает someFunc().

Создать новую тему Ответ Часовой пояс GMT +4, время: 10:27.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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