Форум 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)
-   -   немогу понять где багг=( (http://www.flasher.ru/forum/showthread.php?t=71966)

Webas 16.11.2005 21:34

немогу понять где багг=(
 
Пишу такой код в первом кадре на тайм лайне
внизу я поставил функцию мол типа нажимаешь на мувик и все понеслось... а все понеслось сразу как загрузилось...

function StartClip() {
trace("Start");
_root.hideTextM();
var finishX = 100;
// Координата по Х в которую передвигаем меню
var finishY = 150;
// Координата по Н в которую передвигаем меню
var dx = 10;
// Скорость пердвижения по Х
var dy = dx/((_root.mainMenu._x-finishX)/(_root.mainMenu._y-finishY));
_root.ratation = true;
_root.intervelID = setInterval(function () {
_root.travelMainMenu(-dx, -dy, finishX, finishY);
}, 10);
}
function showTextM() {
hideTextMB = false;
}
function hideTextM() {
//скрытие текста в меню
hideTextMB = true;
this.mainMenu.Mtext.t1._alpha = 0;
this.mainMenu.Mtext.t2._alpha = 0;
this.mainMenu.Mtext.t3._alpha = 0;
}
function travelMainMenu(dx, dy, finishX, finishY) {
//Перемещение твертушки-меню
this.mainMenu._x += dx;
this.mainMenu._y += dy;
if (this.mainMenu._x-finishX<5 || this.mainMenu._y-finishY<5) {
this.mainMenu._x = finishX;
this.mainMenu._y = finishY;
_root.ratation = false;
showTextM();
trace("Stop");
trace("(x,y)("+this.mainMenu._x+","+this.mainMenu._y+")");
clearInterval(_root.intervelID);
}
}
// <<<<<<<<<<<
this.mainMenu.inMainM.CentralBut1.onRelease = StartClip();//<<<<<<<<<<<<
// <<<<<<<<<<<
// вот тут почемуто запускается функция сама собой!!!
// Вопрос почему так происходит??? если ниче не нажимается

KUZEN 16.11.2005 21:38

Может всётаки так

this.mainMenu.inMainM.CentralBut1.onRelease = function(){StartClip()};

Webas 16.11.2005 23:01

this.mainMenu.inMainM.CentralBut1.onRelease = function(){StartClip()};
да так получется, я уже нашел правильный ответ.
еще вот так работает
this.mainMenu.inMainM.CentralBut1.onRelease = StartClip;
Но тогда возникает еще вопрос. Когда надо ставить "()", а когда нет при работе с функциями(процедурами) ??? я вооще запутался в хелпе вроде пишут что надо писать "()" на практике у мя все без них заработало... ниче не понимаю =\
а вообще как правильно, точнее если хочешь добится хорошего стия програмирования, писать function(){StartClip()}; или StartClip;???

Nirth 16.11.2005 23:20

функция это тоже объект(в АС), но когда ты ставишь скобки(), функция начинает выполняться, без скобок, ты просто передаешь ссылку на функцию.
попробуй сделать так
Код:

function str():String {
return "hello";
}
var a = str();
trace(a);
var b = str;
trace(b);
}

в первом случае ты передал переменной "а" результат действия функции(так как ты ее вызвал) и трейситься у тебя "hello", во втором случае ты передал переменной b ссылку на функцию, и трейситься у тебя [type Function]
теперь ты можешь написать так
Код:

var c = b();
trace(c);

и протреситься у тебя "hello".

Webas 17.11.2005 00:56

Огромное спасибо! все доступно обьяснил, я в свою очередь все понял=) чему и рад! THX!


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

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