PDA

Просмотр полной версии : как узнать над каким объектом находится курсор


digid
27.04.2006, 13:56
Допустим имеется несколько объектов,мы не знаем их id.
как узнать их имя просто проведя по ним курсор.
кто знает подскажите.

KUZEN
27.04.2006, 14:02
если на них навешать обработчики onRollOver = function(){trace(this._name);}

Ноябрь
27.04.2006, 15:01
если id и имя одно и то же, то наверно так:
на самом клипе
on(rollOver){trace(_name)}

KUZEN
27.04.2006, 15:38
если id и имя одно и то же, то наверно так:
на самом клипе
on(rollOver){trace(_name)}
А если их несколько сотен )))

Ноябрь
27.04.2006, 15:39
какая разница, мы всеравно имя не знаем:)
вот наведем на них - узнаем:))) и что-нибудь потом придумаем:)))

Kyber Anton
27.04.2006, 16:55
Может лучше поочерёдно проверять на столкновение курсора с клипом каждый клип в событии onEnterFrame? Я просто сторонник писАть весь код в одном кадре, а тут он по всей сцене разбежится.

motor4ik
27.04.2006, 17:21
for (i){
_root[i].onRollOver = roll;
}

roll = function():Void{trace(this._name);}



вот те в одном кадре

Kyber Anton
27.04.2006, 17:35
Так я и говорю..

etc
27.04.2006, 20:02
моторчик, что это такое вы написали?

digid
27.04.2006, 21:38
В том то и дело, что на объекты нельза вешать функции. Нужно чтобы, когда наводишь мышку на объект, возвротилось его имя, чтобы с ним можно было работать.
Моторчик поясните пойжалуста код. а то он что-то не работает.

xcho_
27.04.2006, 21:55
я б удивился если б он работал)))это сокращение,для того,чтоб просто смысл показать...
если нельзя на обьекты..то куда можна?..если сделать в одном кадре,то лучше методом моторчика:

for (i=1;i<=100;i++){
_root[i].onRollOver = roll;
}

roll = function():Void{trace(this._name);}



где твои мувики будут иметь инстантимена 1,2,3,4 и т.д. до 100 )))

iNils
27.04.2006, 22:04
Данную задачу надо более детально описать.
Если нужно озватить часть объектов (и каких?) то это одно, а если все-все, то можно так:
MovieClip.prototype.onRollOver = function () {
trace (this);
};
или так :)
MovieClip.prototype.onMouseMove = function () {
if (this.hitTest (_root._xmouse, _root._ymouse) and this != _root) {
trace (this);
}
};

digid
27.04.2006, 22:19
Вот мне подсказали код.
_root.onMouseMove = function() {
for(var i in this){
if(typeof(this[i])=="movieclip")
if(this[i].hitTest(this._xmouse,this._ymouse,true))
trace("mouse over "+this[i]);
}
}
Дело в том что он объекты читает и выдает имя. Но неполучается обратиться к подгружаемым объектам из swf файла.
а мне нужно обратиться именно к ним.
Подскажите что делать. Зарание спасибо.

iNils
27.04.2006, 22:24
К подгружаемым? Это с помощью loadMovie?

digid
27.04.2006, 22:36
Это вот так.

mcLoader.addListener(l);
_root.createEmptyMovieClip("region", 2);
var mc1 = _root["region"];
mcLoader.loadClip("map/region.swf", mc1);

var mcLoader = new MovieClipLoader();
var l = {};
l.onLoadInit = function(mc1) {;}

Дело в том, что он видет только общий клип region

iNils
27.04.2006, 22:40
Тэгами code кто пользоваться будет?

Ну так. Код что тебе дали обходит только рутовые клипы.
Смени в _root.onMouseMove = function() { _root на то что нужно.

Ноябрь
29.04.2006, 02:30
Я просто сторонник писАть весь код в одном кадре, а тут он по всей сцене разбежится.
вот знаете.. это будет лично мое имхо, и может оно связано с тем, что у меня мало опыта, но помоему в кадре нужно писать код, только тогда, когда иного выхода нет.. в мувике есть (к примеру) замечательная on(enterFrame), т.е все что я напишу в скобках произойдет молниеносно, а на кадре не так, на кадре все постепенно.
например создать мувик и перемещать в одном кадре нельзя, т.к он будет все время создаваться, значит в одном создаем, а в другом двигаем, и поехало все через рефреш..
но, опять же, может у меня просто мало опыта..

Jokey
29.04.2006, 14:49
А мне нравится такой способ:

startDrag (_root.pointer,true);
pointer.onEnterFrame=function () {
name=this._droptarget;
}

И нигде не надо больше ничё писать, а мувикам можно и имен не давать, но только нельзя будет drag использовать (хотя можно извернуться):D