Просмотр полной версии : Увеличение (zoom) мувиклипа (_mc)
selahssea
13.05.2010, 01:44
Добрый день
Помогите разобраться в ситуации.
Значицца есть Какойто_мувиклип с определенными кнопками в нем:
кнопки эти в примере выводят в динамиктекстфилд каждая свой текст.
Поверх этого всего есть две кнопки зума (увеличения_бтн/уменьшения_бтн) по нажатию на увеличение_бтн - естественно Какойто_мувиклип увеличивается и появляется возможность его перетаскивать, и естсественно кнопки которые внутри этого Какогото_мувиклипа не работают, когда нажимаешь кнопку уменьшить_бтн естсетвенно присходит уменьшение какогото_мувиклипа, НО!!! Возможность нажатия на кнопки внутри какогото_мувиклипа не возвращается, а его все так же можно продолжать таскать, помогите разобраться пожалуйста. Может есть какой то специальный способ типа вернуть фокус какомуто_мувиклипу или что то такое.
Вот код в первом и единственном кадре всей сцены:
IntervalNumber = setInterval(checkScale, 35);
function checkScale()
{
if (homer_mc._xscale != 100 && homer_mc._yscale != 100)
{
homer_mc.homer_pix_mc.onPress = function()
{
startDrag(this);
};
homer_mc.homer_pix_mc.onRelease = function()
{
stopDrag();
};
}
else
{
}
};
Вот код увеличение_бтн:
on(release)
{
homer_mc._xscale += 50;
homer_mc._yscale += 50;
}
и уменьшения_бтн:
on(release)
{
if(homer_mc._xscale <= 100 && homer_mc._yscale <= 100)
{
}
else
{
homer_mc._xscale -= 50;
homer_mc._yscale -= 50;
}
}
Исходник прилагается
Contemplator
13.05.2010, 13:01
ладно, придираться не буду... но... на кой фиг пустой else? =))
это первое, ну а второе: startDrag(this), а stopDrag() - понятное дело что перетаскиваться _mc будет и дальше =)
ну и проименуй кнопки да пропиши к ним инструкции всё в том же фрейме - так гораздо проблемней запутаться... ну и ещё порадовало очень:
if(homer_mc._xscale <= 100 && homer_mc._yscale <= 100)
{
}
else
{
homer_mc._xscale -= 50;
homer_mc._yscale -= 50;
}
/*А нормально то if никак не прописать, с нормальными условиями,
что б не было необходимости создавать else?
действие-то должно у тебя происходить только в одном случае =))*/
selahssea
13.05.2010, 16:10
Про ИФ спасибо, ступил, исправлю. а вот про стратдраг и стопдраг я не понял. Подскажите что нужно поменять что бы не перетаскивалось
Добавлено через 22 минуты
Вот поправил код, надеюсь теперь нормально выглядит, и приятней помогать ))
IntervalNumber = setInterval(checkScale, 35);
function checkScale()
{
if (homer_mc._xscale != 100 && homer_mc._yscale != 100)
{
homer_mc.homer_pix_mc.onPress = function()
{
startDrag(this);
};
homer_mc.homer_pix_mc.onRelease = function()
{
stopDrag();
};
homer_mc.homer_pix_mc.onReleaseOutside = function()
{
stopDrag();
};
}
};
zoomIN_btn.onRelease = function()
{
homer_mc._xscale += 50;
homer_mc._yscale += 50;
}
zoomOUT_btn.onRelease = function()
{
if(homer_mc._xscale > 100 && homer_mc._yscale > 100)
{
homer_mc._xscale -= 50;
homer_mc._yscale -= 50;
}
}
Contemplator
13.05.2010, 17:09
компилятор запускать в лом, если правильно помню:
stopDrag (this) =))
selahssea
13.05.2010, 21:50
Помните, к сожалению, не правильно, компилятор даже подсказывает, что stopDrag(); без параметров пишется, да и вопрос у меня не в этом.
Вы по-видимому решили что у меня когда отпускаешь мышь, то объект дальше продолжает таскаться за курсором - но это не так.
Мышь у меня нормально отпускает и снова потом можно схватить мувиклип. А хочу я сделать так что бы когда Мувиклип после увеличения кнопкой зума, вернули в первоначальный размер , он становился активным и те кнопки которые внутри этого мувиклипа, тоже работали, а они не работают, и мувиклип по прежнему можно взять и тащить мышкой.
Если не сложно посмотрите исходник который прикреплен к первому сообщению, и сразу поймете о чем я говорю
selahssea
13.05.2010, 21:56
this.stopDrag();
Проблема совсем не в этом
AzagThoth
13.05.2010, 23:52
delete homer_mc.homer_pix_mc.onPress;
delete homer_mc.homer_pix_mc.onRelease;
Добавлено через 2 минуты
Кнопочные обработчики(когда они уже не нужны естественно) - нужно беспощадно удалять.
Не могу открыть ваш файл из первого поста.
selahssea
14.05.2010, 00:29
Вот поновее файл перезалил в это сообщение.
А этот код только запретил перетаскивание, но кнопки внутри мувиклипа не активировал.
delete homer_mc.homer_pix_mc.onPress;
delete homer_mc.homer_pix_mc.onRelease;
AzagThoth
14.05.2010, 00:30
Ну он код привёл же. Ясно видно, что после создания обработчиков - он их не удаляет когда они больше не нужны.
Добавлено через 2 минуты
IntervalNumber = setInterval(checkScale, 35);
function checkScale()
{
if (homer_mc._xscale != 100 && homer_mc._yscale != 100)
{
homer_mc.homer_pix_mc.onPress = function()
{
startDrag(this);
};
homer_mc.homer_pix_mc.onRelease = function()
{
stopDrag();
delete homer_mc.homer_pix_mc.onPress;
delete homer_mc.homer_pix_mc.onRelease;
};
}
else
{
}
};
onMouseMove = function ()
{
updateAfterEvent();
};
Код не оптимизирован.
Добавлено через 6 минут
Просто скопируйте то что я написал и всё будет как надо.
selahssea
14.05.2010, 02:29
или может быть это вааще по другому надо делать?
AzagThoth
14.05.2010, 03:03
Да. Лучше делать по другому.
Добавлено через 5 минут
Принцип например такой. Проверяйте масштабируемость при нажатии кнопок для увеличения/уменьшения. Если размер приблизился к оригинальному - смело помещайте мувик по центру сцены. И тут же удаляйте обработчики кнопочных событий для мувиклипа - homer_mc.homer_pix_mc
В данном случае setInterval не нужен в принципе. Впрочем onMouseMove Вам тоже, на мой взгляд не нужен. В общем Ваш код можно и желательно уменьшить раза в 2 на мой взгляд убрав лишние и совершенно не нужные действия.
И ещё. Не пишите код в коде кнопок - как Вы это делаете сейчас.
selahssea
15.05.2010, 02:04
Ну ей богу, не помогает ни удаление обработчиков, ни онМаусМув. Все равно фокус к мувиклипу с кнопками не возвращается.
Добавлено через 1 минуту
Может я что не так объяснил, может моя проблема не понятна толком, я могу переобъяснить, если что хотя наверно проще открыть файл и посмареть что не так
onMouseMove = function ()
{
updateAfterEvent();
};
Что это ? Точнее в чем фишка ?
это одно и тоже что
var с = 0;
function a() {
trace(c);
}
a();
Вообщем бред
AzagThoth
15.05.2010, 05:41
selahssea я не ставил своей целью сделать Ваш код безупречно рабочим. Это Вам, наверное, всё таки лучше сделать самому. То что я написал выше и предложил Вам использовать - это всего лишь пример который идёт в ногу с тем как Вы начали это дело реализовывать. То есть пример неоптимальный в принципе. Если Вы сомневаетесь, что оно работает - то могу сказать наверняка - работает. Я скачивал исходник прикриплённый к первому сообщению данной темы и можете не сомневаться проверил то что писал.
Другой вопрос о том стоит ли так делать? - Нет не стоит.
Я не стал переписывать Ваши условия и менять структуру кода. Но они как я уже успел выразиться - не очень в тему вообще. Если хочется понять в какую сторону смотреть, то я бы рекомендовал Вам перечитать сообщение под номером 13 данного топика.
selahssea
15.05.2010, 13:10
AzagThoth, про реализацию другую я понял, обязательно переделаю по-нормальному.
А вот про работоспособность кода - у меня на пример не работает, как я уже писал: Возможность перетаскивания отключается, но внутри две кнопки - серая и красная - они не возвращаются к работоспособному состоянию. Може я что то не так делаю, вы не могли бы показать мне переделанный исходник из первого сообщения?
Добавлено через 3 минуты
Ан нет, прошу порщения действительно работает, спасибо Большое за хелп!
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.