PDA

Просмотр полной версии : Как узнать имя MovieClip по его координатам ????


DarkChris
17.08.2004, 14:31
Как узнать имя мувика зная его координаты
не используя:

for(i in this){
....
if ((this[i]._x==x)&&(this[i]._y==y)){trace ("THIS MOVIE");}
....
}

????

iNils
17.08.2004, 14:34
Правила хорошего тона: не плохо бы объяснить зачем это.

Nox Noctis
17.08.2004, 14:36
как определить температуру тела по контурным картам для шестого класса?

DarkChris
17.08.2004, 14:57
Если невозможно подругому определить так и скажите ...
А зачем мне это если спрашиваю значит нужно...
Просто Если использовать for(...){} при наличии на сцене более 1000 мувиков тормозит все жутко вот и решил спросить авось есть другой метод

Nox Noctis
17.08.2004, 15:01
если бы ты сказал что там у тебя за система и ЗАЧЕМ тебе это нужно - можно было бы что-то придумать. но это ведь секрет, да?

DarkChris
17.08.2004, 15:09
А вы такие любознательные :) Есть карта - строится динамически из матрицы [mxm] карта 2.5D (изометрическая) мне нужно при нажатии кнопки мыши сделать - элемент карты прозрачным при отпускании нормальным
у меня есть координаты мыши и куча мувиклипов

iNils
17.08.2004, 15:18
Типичный случай :))))))

Человек не знающий что есть молоток пытается забивать гвозди ватой, у него это естественно не получается и он пытается узнать у других узнать, как сделать вату тяжелой и твердой. Вопрос естесственно всех удивляет, зачем это делать с ватой? На что получают ответ: "Не ваше дело, нужно значит нужно". Люди голову ломают, пытатся придумать как вату сделать с заданными условиями, вместо того чтобы предложить человеку молоток. В результате, он гвоздь так и не забил... а мог бы.

DarkChris
17.08.2004, 15:23
Я описал проблемму в общих чертах ... Если нечего сказать по существу не спамь плиз...Это никому не нужно .... Перед твоей репликой я как раз образно описал для чего мне это читать нужно а не философию разводить "Если бы да кабы"

iNils
17.08.2004, 15:32
Я описал проблемму в общих чертах ... Если нечего сказать по существу не спамь плиз...Это никому не нужно .... Перед твоей репликой я как раз образно описал для чего мне это читать нужно а не философию разводить "Если бы да кабы"

1. Описал бы раньше, то сразу бы получил молоток (ответ)
2. Есть что скзать, но хочется чтобы в следующий раз ты вопрос ставил правильно, тебе же лучше будет, сразу ответ получишь.
3. Сделать надо так. Описываешь фунцию которая обрабатывает твои действия при нажатии на мувик. Скажем ты хочешь сделать его полупрозрачным, тогда пишешь внутри функциии:

this._alpha=50;

this - это объект вызвавший в данном случаи эту функцию

Далее, при генерации поля из мувиков, принудительно вешаешь им на событие onRelease свою функцию.
Скажем myMovieClip.onRelease=myFunction;

DarkChris
17.08.2004, 15:45
Моя ошибка в том что я не сказал точнее :
Вот действия какие мне нужны :
Я нажал на кнопку мыши и вожу ею по полю и те клипы над которыми был курсор стали полупрозрачными отпускаю клавишу мыши они опять становятся нормальными
MyTexture.prototype = new MovieClip();
....
MyTexture.prototype.onRelease = function(){
}
...
это не даст того результата который мне нужен onPress тоже не даст

iNils
17.08.2004, 15:50
Тогда нужно так:
1. При нажатии мышки, устанавливается флаг в значение 1
2. Всем обектам поля назначить фунцию на onRollOver, которая при значении флага=1 делает вызвавшие ее объект полупрозрачным и добавляет его имя в массив.
3. При отпускании мышки, флаг в значение 0, а все объекты, имена которых в массиве, опять становятся с альфой=100.

DarkChris
17.08.2004, 16:10
А можно подробнее ???

Я делаю :
Selected = new Array();
....
this.onMouseDown=function(){
flag=1;
}
....
this.onMouseUp=function(){
flag=0;
}
....

MyTextres.prototype.onRollOver=function(){
if (flag==1) {
this._alpha=50;
Selected.push(this._name);}
}

и ничего не работает :(

iNils
17.08.2004, 16:32
Ошибка вышла, при нажатой клавише мышки, событие onRollOver не срабатывает.

DarkChris
17.08.2004, 16:45
Да я заметил :) При нажатой мыши идет onDragOver

Nox Noctis
17.08.2004, 16:53
можно так. но тормозить думаю всё равно будет.
_global.Texture = function() {
this.useHandCursor = this.Hand;
};
Texture.heap = [];
Texture.prototype = new MovieClip();
Texture.prototype.onPress = function() {
Texture.heap.push(this);
this._alpha = 50;
};
Texture.prototype.onRelease = function() {
this._alpha = 100;
while (Texture.heap.length) {
var item = Texture.heap.shift();
item._alpha = 100;
}
};
Texture.prototype.onReleaseOutside = Texture.prototype.onRelease;
Texture.prototype.onMouseMove = function() {
if (Texture.heap.length && this._alpha == 100) {
var tst = this.hitTest(_root._xmouse, _root._ymouse, false);
if (tst) {
this._alpha = 50;
Texture.heap.push(this);
}
}
};

DarkChris
17.08.2004, 17:57
ВСЕ ЗАРАБОТАЛО СПАСИБО БОЛЬШОЕ :)