Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Увеличение (zoom) мувиклипа (_mc) (http://www.flasher.ru/forum/showthread.php?t=139856)

selahssea 13.05.2010 01:44

Увеличение (zoom) мувиклипа (_mc)
 
Вложений: 1
Добрый день
Помогите разобраться в ситуации.
Значицца есть Какойто_мувиклип с определенными кнопками в нем:
кнопки эти в примере выводят в динамиктекстфилд каждая свой текст.
Поверх этого всего есть две кнопки зума (увеличения_бтн/уменьшения_бтн) по нажатию на увеличение_бтн - естественно Какойто_мувиклип увеличивается и появляется возможность его перетаскивать, и естсественно кнопки которые внутри этого Какогото_мувиклипа не работают, когда нажимаешь кнопку уменьшить_бтн естсетвенно присходит уменьшение какогото_мувиклипа, НО!!! Возможность нажатия на кнопки внутри какогото_мувиклипа не возвращается, а его все так же можно продолжать таскать, помогите разобраться пожалуйста. Может есть какой то специальный способ типа вернуть фокус какомуто_мувиклипу или что то такое.

Вот код в первом и единственном кадре всей сцены:
Код AS1/AS2:

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
        {
        }
};

Вот код увеличение_бтн:
Код AS1/AS2:

on(release)
{
        homer_mc._xscale += 50;
        homer_mc._yscale += 50;
}

и уменьшения_бтн:
Код AS1/AS2:

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 будет и дальше =)
ну и проименуй кнопки да пропиши к ним инструкции всё в том же фрейме - так гораздо проблемней запутаться... ну и ещё порадовало очень:
Код AS1/AS2:

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 минуты
Вот поправил код, надеюсь теперь нормально выглядит, и приятней помогать ))
Код AS1/AS2:

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

компилятор запускать в лом, если правильно помню:
Код AS1/AS2:

stopDrag (this)

=))

selahssea 13.05.2010 21:50

Помните, к сожалению, не правильно, компилятор даже подсказывает, что stopDrag(); без параметров пишется, да и вопрос у меня не в этом.
Вы по-видимому решили что у меня когда отпускаешь мышь, то объект дальше продолжает таскаться за курсором - но это не так.
Мышь у меня нормально отпускает и снова потом можно схватить мувиклип. А хочу я сделать так что бы когда Мувиклип после увеличения кнопкой зума, вернули в первоначальный размер , он становился активным и те кнопки которые внутри этого мувиклипа, тоже работали, а они не работают, и мувиклип по прежнему можно взять и тащить мышкой.
Если не сложно посмотрите исходник который прикреплен к первому сообщению, и сразу поймете о чем я говорю

in4core 13.05.2010 21:53

this.stopDrag();

selahssea 13.05.2010 21:56

Цитата:

Сообщение от in4core (Сообщение 908043)
this.stopDrag();

Проблема совсем не в этом

AzagThoth 13.05.2010 23:52

Код AS1/AS2:

delete homer_mc.homer_pix_mc.onPress;
delete homer_mc.homer_pix_mc.onRelease;

Добавлено через 2 минуты
Кнопочные обработчики(когда они уже не нужны естественно) - нужно беспощадно удалять.

samana 14.05.2010 00:21

Не могу открыть ваш файл из первого поста.

selahssea 14.05.2010 00:29

Вложений: 1
Вот поновее файл перезалил в это сообщение.

А этот код только запретил перетаскивание, но кнопки внутри мувиклипа не активировал.
Код AS1/AS2:

                delete homer_mc.homer_pix_mc.onPress;
                delete homer_mc.homer_pix_mc.onRelease;



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

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