PDA

Просмотр полной версии : У аттаченого мувика на задаются координаты


s0lar
08.05.2007, 12:36
Здравствуйте.
Почему, когда я делаю

_root.attachMovie("hint", "shopHint_mc", this.getNextHighestDepth(), {x:_xmouse+20, y:_ymouse+20});


мувику shopHint_mc не присваиваются координаты мыши + 20 ? Мовук аттачится в 0, 0

iNils
08.05.2007, 12:43
Не x и y, а _x и_y.

s0lar
08.05.2007, 12:45
и так и так пробовал... вот весь код


stop();
//
var etazh = 1;
var option = buy;
var count = 29;
//==============================================================
// Here we load xml.
mapXML = new XML();
mapXML.load("flashMap.xml");
mapXML.ignoreWhite = true;
mapXML.onLoad = is_loaded;
function is_loaded(success) {
if (success) {
createMap();
}
}
//==============================================================
function createMap() {
var countOption = mapXML.childNodes[0].childNodes.length;
//trace(countOption);
for (var i = 0; i<countOption; i++) {
var mcName = mapXML.childNodes[0].childNodes[i].attributes.mcName;
var shopName = mapXML.childNodes[0].childNodes[i].attributes.shopName;
var link = mapXML.childNodes[0].childNodes[i].attributes.link;
var nodeValue = mapXML.childNodes[0].childNodes[i].childNodes.toString();
//trace(nodeValue);
//
_root[mcName].shopName = shopName;
_root[mcName].link = link;
_root[mcName].nodeValue = nodeValue;
// RollOver
_root[mcName].onRollOver = function() {
//removeMovieClip(_root["square_mc"]);
//createHint(this.nodeValue);
_root.attachMovie("hint", "shopHint_mc", this.getNextHighestDepth(), {x:0, y:0});
};
// RollOut
_root[mcName].onRollOut = function() {
removeMovieClip(_root["shopHint_mc"]);
};
// MouseMove
_root[mcName].onMouseMove = function() {
//removeMovieClip(_root["square_mc"]);
//createHint(this.nodeValue);
shopHint_mc._x = _xmouse+20;
shopHint_mc._y = _ymouse+20;
};
}
}
function createHint(hintText:String) {
//trace(_xmouse);
_root[mcName].attachMovie("hint", "shopHint_mc", this.getNextHighestDepth(), {x:1000});
shopHint_mc._visible = false;
_root["shopHint_mc"]._x = _xmouse;
_root["shopHint_mc"]._y = _ymouse;
}



убрал лишнее..
вот такой код


stop();
//
var etazh = 1;
var option = buy;
var count = 29;
//==============================================================
// Here we load xml.
mapXML = new XML();
mapXML.load("flashMap.xml");
mapXML.ignoreWhite = true;
mapXML.onLoad = is_loaded;
function is_loaded(success) {
if (success) {
createMap();
}
}
//==============================================================
function createMap() {
var countOption = mapXML.childNodes[0].childNodes.length;
//trace(countOption);
for (var i = 0; i<countOption; i++) {
var mcName = mapXML.childNodes[0].childNodes[i].attributes.mcName;
var shopName = mapXML.childNodes[0].childNodes[i].attributes.shopName;
var link = mapXML.childNodes[0].childNodes[i].attributes.link;
var nodeValue = mapXML.childNodes[0].childNodes[i].childNodes.toString();
//
_root[mcName].shopName = shopName;
_root[mcName].link = link;
_root[mcName].nodeValue = nodeValue;
// RollOver
_root[mcName].onRollOver = function() {
//removeMovieClip(_root["square_mc"]);
//createHint(this.nodeValue);
_root.attachMovie("hint", "shopHint_mc", this.getNextHighestDepth(), {x:0, y:0});
};
// RollOut
_root[mcName].onRollOut = function() {
removeMovieClip(_root["shopHint_mc"]);
};
// MouseMove
_root[mcName].onMouseMove = function() {
//removeMovieClip(_root["square_mc"]);
//createHint(this.nodeValue);
shopHint_mc._x = _xmouse+20;
shopHint_mc._y = _ymouse+20;
};
}
}
function createHint(hintText:String) {
_root[mcName].attachMovie("hint", "shopHint_mc", this.getNextHighestDepth(), {_x:_xmouse, _y:_ymouse});
}



Смысл кода, создать всплывающие подсказки (подсказка движется относительно мыши) при наведении на мувик. (текст грузится из XML)

screamge
08.05.2007, 13:02
у меня что-то на подобии того, только сама подсказка не аттачится, а прорисовывается

s0lar
08.05.2007, 13:14
Я сначала тоже рисовал.. но там была проблема с глобальными координатами.. вернее я не смог подсказку выводить около мышки.. а здесь по событию onMouseMove - все нормально, но при аттаче подсказка ставится в 0, 0

lowka
08.05.2007, 13:19
_root.attachMovie("hint", "shopHint_mc", this.getNextHighestDepth(), {x:0, y:0});

У мувика нет таких свойств.

screamge
08.05.2007, 13:32
У меня написан класс для простой подсказки, могу выложить если разберёшься

CorC
08.05.2007, 13:35
и так и так пробовал... вот весь код

{x:0, y:0}


Плохо пробовали, надо
{_x:0, _y:0}

screamge
08.05.2007, 13:37
народ кто-нибудь читал предыдущие комменты? во втором посте ответ уже дан:)

Kikasso
08.05.2007, 13:57
а что это у вас за солянка?
function createHint(hintText:String) {
_root[mcName].attachMovie("hint", "shopHint_mc", this.getNextHighestDepth(), {_x:_xmouse, _y:_ymouse});
}
аттачится в какой-то рутовый мувик, Depth берется от this (а в данном случае это XML, так что получаете NAN ), а мышиные координаты вообще без указателя, подозреваю тоже NAN.

s0lar
08.05.2007, 20:20
Плохо пробовали, надо
{_x:0, _y:0}


Ну почему вы не верите? Я написал что пробовал с _x и _y.. просто код выслал с этой ошибкой.. случайно.

Может подскажите, как сделать всплывающую подсказку и чтобы она двигалась за мышкой? как при аттаче задать мувику координаты?

Aziz Zaynutdinoff
08.05.2007, 20:36
this.attachMovie("mc_name", "mc_new_name", this.getNextHighestDepth(), {_x:_root._xmouse, _y:_root._ymouse});

s0lar
08.05.2007, 20:49
this.attachMovie("mc_name", "mc_new_name", this.getNextHighestDepth(), {_x:_root._xmouse, _y:_root._ymouse});

нет не работает. Всеравно ставит в 0,0

screamge
08.05.2007, 21:06
stop();
//
var etazh = 1;
var option = buy;
var count = 29;
//==============================================================
// Here we load xml.
mapXML = new XML();
mapXML.load("flashMap.xml");
mapXML.ignoreWhite = true;
mapXML.onLoad = is_loaded;
function is_loaded(success) {
if (success) {
createMap();
}
}
//==============================================================
function createMap() {
var countOption = mapXML.childNodes[0].childNodes.length;
//trace(countOption);
for (var i = 0; i<countOption; i++) {
var mcName = mapXML.childNodes[0].childNodes[i].attributes.mcName;
var shopName = mapXML.childNodes[0].childNodes[i].attributes.shopName;
var link = mapXML.childNodes[0].childNodes[i].attributes.link;
var nodeValue = mapXML.childNodes[0].childNodes[i].childNodes.toString();
//
_root[mcName].shopName = shopName;
_root[mcName].link = link;
_root[mcName].nodeValue = nodeValue;
// RollOver
_root[mcName].onRollOver = function() {
//removeMovieClip(_root["square_mc"]);
createHint(this.nodeValue);
};
// RollOut
_root[mcName].onRollOut = function() {
_root.shopHint_mc.removeMovieClip()
};
// MouseMove
_root[mcName].onMouseMove = function() {
//removeMovieClip(_root["square_mc"]);
createHint(this.nodeValue);
};
}
}
function createHint(hintText:String) {
_root[mcName].attachMovie("hint", "shopHint_mc", this.getNextHighestDepth(), {_x:_root._xmouse + 20, _y:_root._ymouse + 20});
}


Работает?

etc
08.05.2007, 21:54
Выкладывайте уже исходник, не заставляйте людей гадать на кофейной гуще.

s0lar
09.05.2007, 11:21
Работает?

Нет.. Спасибо.. уже нашел другой код у KUZEN'a. Спасибо всем.

Вот код функции (если кому интересно, и для поисковиков )) )


F_tips = function (mc, t) {
_root.createTextField("hint", 10000, _xmouse+20, _ymouse-20, 0, 20);
my_fmt = new TextFormat();
my_fmt.color = 0xFFFFFF;
my_fmt.leftMargin = 4;
my_fmt.rightMargin = 3;
with (hint) {
border = true;
borderColor = 0xFFFFFF;
background = true;
backgroundColor = 0xFF0000;
autoSize = true;
text = t;
setTextFormat(my_fmt);
}
_root[mc].onMouseMove = function() {
//trace(_root._width+" | "+_root.hint._width);
if (_root._width >= (_root.hint._width+_root._xmouse+5)) {
_root.hint._x = _xmouse+20;
}
if (_root._height >= _root.hint._height+_root._ymouse+5) {
_root.hint._y = _ymouse-20;
}
updateAfterEvent();
if (this._xmouse>this._width || this._xmouse<0 || this._ymouse>this._height || this._ymouse<0) {
delete this.onMouseMove;
_root.hint.removeTextField();
}
};
};