Форум 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)
-   -   Не могу приаатачить клип (6 хитов) (http://www.flasher.ru/forum/showthread.php?t=87862)

asb_0 13.11.2006 12:59

Не могу приаатачить клип (6 хитов)
 
пытаюсь сделать обработчик чтобы по ненажатию на кнопку пвсплывало сообщение кликни мол тут
вот код
Код:

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) тут даже деление есть так что сам удивляюсь


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

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