Просмотр полной версии : объявление функций MovieClip ( ошибка )
может ошибка в коде или я не там объявляю onRelease
код .as
class z_mapCellBuffer
{
var _mc:MovieClip;
function z_mapCellBuffer( )
{
var temp_mc;
var order;
_mc = _root.createEmptyMovieClip( "_mc", _root.getNextHighestDepth() );
order = 1;
_mc.attachMovie( "cellButton", "cell" + order, order );
temp_mc = _mc["cell" + order ];
temp_mc.onRelease = function()
{
trace( temp_mc._scriptIndex );
}
}
function fillCell( scriptCell:Number, bufferCell:Number, instance:String, position:String )
{
var temp_mc = _mc["cell" + bufferCell ];
temp_mc._scriptIndex = scriptCell;
trace( _mc["cell" + bufferCell ]._scriptIndex );
}
}
Скрипт .fla
mcb = new z_mapCellBuffer();
mcb.fillCell( 1, 0, "", "" );
при запуске ролика trace "1"
при нажатии на клип "cell1" trace "undifined"
я что то не правильно сделал?
screamge
02.08.2007, 09:01
Да вообще класс на класс не похож. Переменные не надо объявлять в теле конструтора, а нужно выносить в приватные/публичные свойства класса. Название класса должно начинаться с прописной буквы. Мувиклипы так не создаются. Возвращающий тип не указан. Для получения/присвоения нужных значений существуют геттер/сеттеры.
По хорошему класс нужно переписывать.
Только вот что вы хотите сделать методом fillCell до меня честно не доходит.
да не важно зачем fillCell
temp_mc, order в теле конструктора живут столько, сколько сама функция, это не переменные класса
С прописной буквы? Это как то влияет на скорость или компиляцию?
Возвращающий тип, хм... ну вообще если тип Void, то его не нужно писать
По теме есть какие нибудь советы?
screamge
02.08.2007, 09:20
А что вы хотите сделать то? Просто из вашего кода это совершенно не понятно. Хотите создать мувиклип через класс, назначить ему что-то, если да то что именно?
суть проста
var some_mc = new MovieClip();
some_mc._someParam = "something";
some_mc.onRelease = function()
{
trace( this._someParam );
}
результат по нажатию на some_mc - trace "something"
Здесь есть сомнения? У меня нет. Так почему у меня в коде написано тоже самое а trace "undefined"
P.S. fillCell - клипу _mc.cell1._scriptIndex = "1";
далее _mc.cell1.onRelease выполняет trace _mc.cell1._scriptIndex
результат "undefined"
суть проста
var some_mc = new MovieClip();
some_mc._someParam = "something";
some_mc.onRelease = function()
{
trace( this._someParam );
}
результат по нажатию на some_mc - trace "something"
Здесь есть сомнения? У меня нет.
А вы проделайте такой эксперимент. На что вы собрались нажимать?
Мувиклипы через new без хака не объявляются.
да суть не в том что куда нажимать, а суть в коде.
Если на some_mc можно нажать, код onRelease выполниться, правильно? и трэйс нам выдаст "something".
мысли абстрактно...
Теперь код класса - там что не так, почему эта связка не выполняется?
короче, долбите мозг мне не по теме.
Ладно, вот по теме:
temp_mc.onRelease = function(){
trace( temp_mc );
trace( this._scriptIndex );
}
Тема закрыта, а zafod получает второй плюс.
Ваша оценка комментариев никого не интересует, если вы не хотите учиться и понимать, как нужно делать, то это ваши проблемы. Ваш код совершенно ужасен, вам говорят, как нужно делать от и до, а вы упираетесь. Ваяйте свою хренотень дальше тогда и советов не ждите. С таким отношением к работе вам специалистом никогда не быть.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.