Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Какая функция выполняет это действие? (http://www.flasher.ru/forum/showthread.php?t=183575)

tobix 25.08.2012 18:55

Какая функция выполняет это действие?
 
Привет всем форумчанам) У меня есть вопрос по AS. У меня есть баннер,и представьте. Лежат мешки с деньгами где нибудь, а рядом с ним сейф для денег. И надо сделать так, чтобы пользователь выбрал мешок,нажал на него, потом перетащил в сейф. И дальше переходит по ссылке...Помогите пожалуйста, объясните как это можно воплотить?

bav 25.08.2012 21:23

1. На сейф вешаем прослушку события MOUSE_UP. В слушателе делаем все, что необходимо (например прекращаем перетаскивание мешка методом stopDrag() и переход по ссылке).
Код AS3:

// Внешняя переменная dragedSack, речь о которой пойдет чуть ниже
var dragedSack:MovieClip = null;
safe.addEventListener(MouseEvent.MOUSE_UP, safeUpHandler);
function safeUpHandler(e:MouseEvent):void {
    // Тут наверно имеет смысл проверить перетаскивается ли
    // в данный момент какой-нибудь мешок.
    // Переменная dragedSack внешняя, объявленная как MovieClip
    if (dragedSack) {
        // Совершаем переход по ссылке. В зависимости от имени мешка
        // можно переходить по разным ссылкам. (dragedSack.name)
        dragedSack.stopDrag();
        dragedSack.mouseEnabled = true;
        navigateToURL(new URLRequest("http://www.yandex.ru"));
        ...
        // Не забываем в конце обнулить ссылку на dragedSack
        dragedSack = null;
    }
}

2. На мешки вешаем прослушку события MOUSE_DOWN. В слушателе вызываем метод startDrag() и выключаем мышиную активность мешка, чтобы он потом нам не мешал. И сохраняем ссылку на мешок в dragedSack.
Код AS3:

sack.addEventListener(MouseEvent.MOUSE_DOWN, sackDownHandler);
function sackDownHandler(e:MouseEvent):void {
    var sack:MovieClip = e.currentTarget as MovieClip;
    sack.mouseEnabled = false;
    sack.startDrag();
    dragedSack = sack;
}

3. Пишу на коленке, не проверяя. Что не ясно спрашивайте.

tobix 25.08.2012 23:05

Вложений: 1
Здравствуйте! Спасибо что помогаете) Но у меня появилась некая проблема...Никаких действий нету...И еще Адоб нашел ошибку... Пробовал тестить, все фрагменты стоят на месте.
Вот скрин.
Вложение 28379

caseyryan 26.08.2012 10:35

Цитата:

Сообщение от tobix (Сообщение 1093763)
Здравствуйте! Спасибо что помогаете) Но у меня появилась некая проблема...Никаких действий нету...И еще Адоб нашел ошибку... Пробовал тестить, все фрагменты стоят на месте.
Вот скрин.(не забудьте убрать пробел после radikal.
http://s017.radikal. ru/i438/1208/0f/63b57708889b.png
P.S mooncar Не могу никак выложить, через расширенный режим пробовал. В ссылке много звездочек.Пришлось сделать по другому

Естественно компилятор найдет ошибку, зачем там троеточие? Это недопустимо

bav 26.08.2012 11:04

tobix, потрудитесь все-таки приложить скриншот к посту (мне, например, не хочется ходить на подозрительные сайты с целью посмотреть картинку). Чтобы вам помогли исправить ошибку нужно привести текст ошибки и, желательно, в какой строке она случается.

tobix 26.08.2012 18:49

Попробовал убрать троеточие. Этой ошибки больше нет. Но зато появились еще две.
"Монтажный кадр 1, слой "Слой 2", кадр 1, строка 1 1120: Обращение несуществующего свойства sack.
Монтажный кадр 1, слой "Слой 1", кадр 1, строка 3 1120: Обращение несуществующего свойства safe.
"

bav 26.08.2012 18:56

На сцене должен быть клип мешка с Instance name (то есть именем) "sack" и сейфа с именем "safe". Под троеточием я подразумевал наличие некоторого кода.

Wolsh 26.08.2012 19:24

Я с недавних пор в постах перед троеточием ставлю двойной слэш. А иногда четыре слэша. Для верности.

tobix 26.08.2012 22:09

bav Спасибо большое, всё получилось) Только вот еще вопрос, а как сделать так,чтобы после того как я перешел по ссылке у меня Баннер заново воспроизводился? А то когда я перетаскиваю, у меня Мешок остается на том же месте куда я его переставил, хотелось бы чтобы после перехода Баннер заново проигрывался.

caseyryan 26.08.2012 22:27

в том же обработчике MOUSE_UP назначать координатам мешка исходные значения
Код AS3:

dragedSack.x = 0;
dragedSack.y = 0;

ну или где он там был изначально


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

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