Форум 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)
-   -   к attachMovie не могу приклеить событие (http://www.flasher.ru/forum/showthread.php?t=125051)

Staser007 15.05.2009 11:55

к attachMovie не могу приклеить событие
 
Привет! Создаю класс, все работает нормально, экземпляры создаются и работают
Код:

pSelectGroup.prototype = new MovieClip();
function pSelectGroup() {
        this.Name="";
}
Object.registerClass("CSelectGroup", pSelectGroup);

хочу к нему прицепить надпись

Код:

pSelectGroup.prototype.SetVendors = function(val){
  this.attachMovie("mcVendorCaption","vendorCaption",0);
  this["vendorCaption"].mcvCaption.text = val;

опять все отлично, надписи на экзеплярах появляются, КАК К ЭТИМ НАДПИСЯМ ПРИЦЕПИТЬ СОБЫТИЕ!!!

Код:

pSelectGroup.prototype.SetVendors = function(val){
  this.attachMovie("mcVendorCaption","vendorCaption",0);
  this["vendorCaption"].mcvCaption.text = val;
  this["vendorCaption"].onPress = function() {
    trace("asdf");                       
  }
}

этот вариант нивкакую неработает!!!

iNils 15.05.2009 12:13

Код AS1/AS2:

#initclip
function pSelectGroup () {
        this.Name = "";
        this.SetVendors ("ffffff")
}
pSelectGroup.prototype = new MovieClip ();
Object.registerClass ("CSelectGroup", pSelectGroup);
pSelectGroup.prototype.SetVendors = function (val) {
        var mc = this.attachMovie ("mcVendorCaption", "vendorCaption", 0);
        mc.mcvCaption.text = val;
        mc.onPress = this.press;
};
pSelectGroup.prototype.press = function () {
        trace ("asdf");
};
#endinitclip


Staser007 15.05.2009 12:27

кажется понял, попробую

Добавлено через 20 минут
Неработает, что такое
Код:

this.SetVendors ("ffffff")
Давлю на мышь сильнее, все-равно неработает

iNils 15.05.2009 13:31

Исходник?

akc.666 15.05.2009 13:42

Была подобная проблема... Попробуйте так:

Код AS1/AS2:

#initclip
function pSelectGroup () {
        this.Name = "";
        this.SetVendors ("ffffff")
}
pSelectGroup.prototype = new MovieClip ();
Object.registerClass ("CSelectGroup", pSelectGroup);
pSelectGroup.prototype.SetVendors = function (val) {
        var mc = this.attachMovie ("mcVendorCaption", "vendorCaption", 0);
        mc.mcvCaption.text = val;
        this.onEnterFrame = onEnterFrameHendler;
};
pSelectGroup.prototype.press = function () {
        trace ("asdf");
};
pSelectGroup.prototype.onEnterFrameHendler= function () {
        delete this.onEnterFrame;
        this.vendorCaption.onPress = this.press;
};
#endinitclip


iNils 15.05.2009 13:46

onEnterFrame тут вообще не в тему. Ошибка 100% косвенная.

Staser007 15.05.2009 13:55

Исходник привязан к сайту, загрузка с сайта идет
могу прописать абсолютные пути.

Добавлено через 2 минуты

тут накосячено уже немнго, я пробую варианты
должен быть класс-окно с массивом vendoro в

кликая на vendora хочу событие


Код:

function pSelectGroup() {
        this._alpha = 0;
        this._xscale = 0;
        this._yscale = 0;
//        this.process = 0;
        this.Caption="";
        this.process="";
        this.SetVendors ("ffffff");
}
pSelectGroup.prototype = new MovieClip();
Object.registerClass("CSelectGroup", pSelectGroup);
pSelectGroup.prototype.SetVendors = function(val){
        v = val.split(",");
        j = 0;
       
//        for(j=0;j<v.length;j++){
//                this.attachMovie("mcVendorCaption","vendorCaption"+j,j,{_x:10,_y:9*j+20});
                var mc = this.attachMovie("mcVendorCaption","vendorCaption"+j,1001,{_x:10,_y:9*j+20});
                mc = this["vendorCaption"+j].mcvCaption.text = v[j];
                mc.onRollOver = function(){
                        trace ("asdf");
                }
//        }
}

pSelectGroup.prototype.onEnterFrame = function(){
        if(this.process=="show"){
                if(this._alpha<100){
                        this._alpha+=20;this._xscale+=20;this._yscale+=20;
                }else{
                        this.process="";
                        _root.EndShow();
                }
        }
}
pSelectGroup.prototype.onPress = function(){
        _root["Grp"+_root.activeClip].swapDepths(_root.cats+_root.activeClip);
        _root.activeClip = this.id;
        this.swapDepths(1000);
}
pSelectGroup.prototype.SetID = function(id){
        this.id = id;
}
pSelectGroup.prototype.SetCaption = function(str){
        this.Caption = str;
        this.bCaption.text = str;
}

Добавлено через 15 минут
Я тоже думаю ошибка в том что я гдето чтото не там написал, сам я в AS почти новичек, но программирую уже 15 лет, начал писать на AS во флеше и постоянно удивляюсь как в нем все сложно, наверно придется все-равно платить флешерам.
здесь http://www.elitasvet.ru/index_page_80.html приклике на производителя нужно вставить отклик

silin 15.05.2009 15:24

>>постоянно удивляюсь как в нем все сложно
может ты сам себе жизнь усложняешь, в чем нужда прикручивать класс через #initclip/registerClass ?
флеш уже лет пять как поддреживает нормальную запись
твой класс, например, может и так выглядеть:
Код AS1/AS2:

class CSelectGroup extends MovieClip 
{
        var Name = "";
 
        function SetVendors(val)
        {
                var mc = this.attachMovie ("mcVendorCaption", "vendorCaption", 0);
                mc.mcvCaption.text = val;
                mc.onPress = function()
                {
                        trace ("asdf");
                }
        }
}


Staser007 15.05.2009 15:42

Значит я ошибся учебником. Спасибо выкину его на свалку. В этом коде все понятно еще бы работал!!! :)
Напиши еще заодно как экземпляр класса создать?

Добавлено через 11 минут
class CSelectGroup extends MovieClip - Syntax error.

silin 15.05.2009 15:59

код в файле CSelectGroup.as
в библиотеке символ MovieClip с установками id= "test" и Class="CSelectGroup"
код в кадре
Код AS1/AS2:

var test:CSelectGroup=CSelectGroup(this.attachMovie("test","clip",0));
test.SetVendors("O_O");

руками положенный на сцену символ тоже будет экземпляром CSelectGroup

вариант 2: в библиотеке не нужно ничего (mcVendorCaption нужен, конечно)
код создания экземпляра:
Код AS1/AS2:

var test:CSelectGroup=this.createEmptyMovieClip("clip",0);
test.__proto__=CSelectGroup.prototype;
test.SetVendors("O_O");



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

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