PDA

Просмотр полной версии : Не могу приаатачить клип (6 хитов)


asb_0
13.11.2006, 12:59
пытаюсь сделать обработчик чтобы по ненажатию на кнопку пвсплывало сообщение кликни мол тут
вот код
function button_wait(xx, yy, xz, yz:Number):Void {
work = true;
var st:Number = 1;
_root.attachMovie('but', 'but_mc', 12, {_x:xx, _y:yy, _height:yz, _width:xz});
but_mc.useHandCursor = false;
_root.onMouseDown = function():Void {
st++;
if (st>20) {
trace(xx+':'+yy);
if ((xx<120) and (yy>75)) _root.attachMovie('ukaz', 'ukaz_mc', 113, {_x:xx+xz/2, _y:yy+yz/2});
}
};
but_mc.onRelease = function():Void {
but_mc.removeMovieClip();
delete _root.onMouseDown;
ukaz_mc.removeMovieClip();
work = false;
};
}

ри этом _root.attachMovie('but', 'but_mc', 12, {_x:xx, _y:yy, _height:yz, _width:xz}); нормально аттачится
а _root.attachMovie('ukaz', 'ukaz_mc', 113, {_x:xx+xz/2, _y:yy+yz/2}); не хочет

El Scream
13.11.2006, 13:07
теги code вот такие []

pkfun
13.11.2006, 14:28
Не смог понять, что точно вы хотите сделать своим кодом, но конкретно по вставке из библиотеки скажу следующее:
вы передаете в функцию button_wait четыре параметра - xx, yy, xz, yz. Эти переменные, как и переменная st, будут существовать пока исполняется функция button_wait. Что делает у вас эта функция? Она аттачит мувик but из библиотеки, создает локальную переменную st, запускает обработчик onMouseDown для мувиклипа _root, запускает обработчик onRelease для мувиклипа but_mc, уничтожает переменные xx, yy, xz, yz, st, заканчивается.
Т.о, после окончания работы функции у вас нехватает параметров для аттача второго мувика(ukaz_mc).
Вам просто нужно прописать параметры для ukaz_mc во внешних переменных, либо использовать параметры but_mc.
Вот примерный вариант:

var pt:MovieClip = this;
var mc:MovieClip;
var st:Number = 1;
//
function button_wait(xx, yy, xz, yz:Number):Void {
work = true;
mc = pt.attachMovie('but', 'but_mc', pt.getNextHighestDepth(), {_x:xx, _y:yy, _height:yz, _width:xz});
mc.useHandCursor = false;
pt.onMouseDown = function():Void {
st++;
if (st>20) {
trace(mc._x+':'+mc._y);
if (mc._x<120 && mc._y>75) {
pt.attachMovie('ukaz', 'ukaz_mc', pt.getNextHighestDepth(), {_x:mc._x+mc._width/2, _y:mc._y+mc._height/2});
}
}
};
mc.onRelease = function():Void {
mc.removeMovieClip();
delete pt.onMouseDown;
ukaz_mc.removeMovieClip();
work = false;
};
}

asb_0
13.11.2006, 15:15
ошибку нашел оказывается как ни странно в результате _x:mc._x+mc._width/2 получалос 100+50=10050 то есть как строка соединялось... но как ни странно параметров хватает для второго клипа то есть работает ....

pkfun
13.11.2006, 15:38
Такое может случиться в трэйсе. Если у вас складываются переменные которым ранее присваивались числа( и они получили автоматом тип Number) и среди них встречается стринговая переменная, то все последующие переменные получают тип String. :D

var a:Number = 1;
var b:Number = 1;
var c:Number = 1;
trace(a+b+c);
trace(';)'+a+b+c);
trace(a+';)'+b+c);
trace(a+b+';)'+c);
trace(a+b+c+';)');

asb_0
13.11.2006, 16:14
в то то и странность что типа стринг в годе нет нигде все жестко прописано как Number
вот _x:xx+xz/2 а данные берутся из Function button_wait(xx, yy, xz, yz:Number) тут даже деление есть так что сам удивляюсь