Форум 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)
-   -   Обращение к кнопке, находящейся внутри мувиклипа (http://www.flasher.ru/forum/showthread.php?t=176694)

Ar_man115 15.03.2012 17:28

Обращение к кнопке, находящейся внутри мувиклипа
 
Доброго времени суток, уважаемые форумчане.
Простите за банальность вопроса, знаю, что учиться нужно начинать с основ, но время немного поджимает, поэтому спрашиваю здесь.
Суть вот в чём, делаю интерактивную карту области, уже сделал анимацию всех районов при наведении мыши.
(нижний ролик)Теперь нужно написать обработку нажатий на районы.
Нашел в сети вот такой отрывок кода
Код AS1/AS2:

import mx.transitions.Tween;
import mx.transitions.easing.*;
var cities:Array = ["Prim", "Berd"]
 
function mover (targetX, targetY){
currentX = marker_mc._x;
currentY = marker_mc._y;
var xTween:Tween = new Tween(marker_mc, "_x", Strong.easeOut, currentX, targetX, .5, true);
var yTween:Tween = new Tween(marker_mc, "_y", Back.easeOut, currentY, targetY, 1.5, true);
}
 
for (var i = 0; i<cities.length; i++){
var my_btn = this[cities[i]+"_btn"];
my_btn.myCity = cities[i];
my_btn.onRelease = function() {
mover( this._x, this._y);
marker_mc.gotoAndStop(this.myCity);
}
}

Но он для ситуации, когда кнопки находятся на слое в самом монтажном кадре
В моём же случае кнопки находятся в мувиклипах (к примеру, кнопка Berd_btn находится в мувиклипе Berd_dist и так со всеми, имена кнопок и мувиклипов сходны)
Пробовал строку
Код AS1/AS2:

var my_btn = this[cities[i]+"_btn"];

заменять на
Код AS1/AS2:

var my_btn = this[cities[i]+"_dist."+cities[i]+"_btn"];

Не помогло...

Ткните пожалуйста, как ситуацию исправить, что делать...
Не очень хочется в каждый мувиклип добавлять по маркеру и внутри обрабатывать... Массивом было бы рациональнее...
Т.е. вопрос заключается в том, как обратиться к кнопке внутри мувиклипа из кода монтажного кадра?

Заранее благодарю за помощь

mooncar 15.03.2012 17:36

При формировании ссылки на кнопку верный синтаксис для пути должен быть таким:
Код AS1/AS2:

var my_btn =  this[cities[i] + '_dist'][cities[i] + '_btn'];


Ar_man115 15.03.2012 17:56

Изменил... Не помогло(

mooncar 15.03.2012 18:00

Код AS1/AS2:

var my_btn =  this[cities[i] + '_dist'][cities[i] + '_btn'];
trace(my_btn); //undefined или видит путь правильно?


Ar_man115 15.03.2012 18:01

Тут видимо дело совсем не в этом... Т.к. маркер не двигается и не переходит на нужный кадр

Добавлено через 2 минуты
Вывод
Prim_dist.Prim_btn
Berd_dist.Berd_btn

Добавлено через 3 минуты
Т.е как по мне, так верно, но при этом маркер стоит на месте и не изменяется (хотя в изначальном варианте он переходил на нужный кадр и перемещался)

mooncar 15.03.2012 18:06

Цитата:

Сообщение от Ar_man115 (Сообщение 1069294)
вопрос заключается в том, как обратиться к кнопке внутри мувиклипа из кода монтажного кадра?

Ответ даден, ошибку с путем исправили, раз трейсит теперь нормально.
Что-то там дальше, смотрите в обработчике my_btn.onRelease, this там ссылается на my_btn, если что.

Ar_man115 15.03.2012 18:07

Попробовал ввести trace(myCity);
Оно выдаёт undefined

Добавлено через 1 минуту
прошу прощения, если trace(my_btn.myCity);
то выдаёт Prim, Berd

mooncar 15.03.2012 18:11

Ну да, все верно, это же ссылка на имена - элементы массива cities:
Код AS1/AS2:

my_btn.myCity = cities[i];


Ar_man115 15.03.2012 18:18

Ничего не могу понять((( В мувиклипе marker_mc есть кадры Prim и Berd,
Код AS1/AS2:

trace(my_btn.myCity);

выдаёт Prim, Berd
Почему не работает
Код AS1/AS2:

marker_mc.gotoAndStop(this.myCity);

понять не могу(((

mooncar 15.03.2012 18:26

Код AS1/AS2:

var my_btn =  this[cities[i] + '_dist'][cities[i] + '_btn'];
my_btn.myCity = cities[i];
my_btn.onRelease = function() {
  trace(this.myCity) //выводит  Prim и Berd, так?
  trace(marker_mc); //не undefined , виден?
  marker_mc.gotoAndStop(this.myCity); //должен работать тогда
};



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

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