Форум 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)
-   -   работа с классами AS2 (http://www.flasher.ru/forum/showthread.php?t=88934)

ktotam 04.12.2006 14:38

работа с классами AS2
 
Привет!
Возник вопрос такого рода:
есть фаил Клип.as который наследует свойства класса мувиклип, как в него передавать данные которые бы вставлялись в метод при нажатии на него, например
Код:

обьект1.нажали=removeMovieClip()
обьект2.нажали=trace('hello')

вот сам класс(рабочий):

Код:

class Клип{
        private var _mc:MovieClip
        //private var _isActive:Boolean
        /*Constructor*/
        function Клип(timeline:MovieClip, _Клип:String,_ИМЯ:String,_СЛОЙ:Number, _х:Number, _у:Number/*, isActive:Boolean*/){
                /*Initialize the level counter*/
                //if (_global.lvl == undefined)_global.lvl = 0
                _mc = timeline.attachMovie(_Клип, _ИМЯ, _СЛОЙ)
                _mc._x = _х;
                _mc._y = _у;
                /*_isActive = isActive
                if (!_isActive) _mc._visible = false
                _global.lvl++}*/
               
        }
       
        public function getClip():MovieClip{return _mc}
        public function collides(sp:Клип):Boolean{return _mc.hitTest(sp.getClip())}
        /*Getter / Setter for _isActive property*/
        /*public function get isActive():Boolean{return _isActive}
        public function set isActive(flag:Boolean):Void{_isActive = flag
                if (_isActive )_mc._visible = true;
                else _mc._visible = false
        }*/
        public function get x():Number{return _mc._x}
        public function get y():Number{return _mc._y}
        public function set __x(__x:Number):Void{_mc._x = __x}
        public function set __y(__y:Number):Void{_mc._y = __y}
        public function getWidth():Number{return _mc._width}
        public function getHeight():Number{return _mc._height}
        public function set __width(__width:Number){_mc._width =__width}
        public function set __height(__height:Number){_mc._height=__height}
       
}

[iNils: Для оформления своего кода, надо использовать теги [code][/code]]

etc 04.12.2006 14:42

У тебя классы так по-русски и называются?

ktotam 04.12.2006 15:58

да, так и называются, в этом ошибки нет на флеше2004про, если что пишите не русские я переделаю, главное чтоб работало

etc 04.12.2006 16:39

А почему у тебя «_y», а не «_ИГРЕК»? :D
Вообще-то все должно быть по-английски.

А ещё, я так и не понял, что ты хочешь сделать.

FourSide 04.12.2006 16:54

"... при нажатии на него..." - это событие onPress / onRelease. Переопределяйте эти события (или одно из них) и всё будет.

По коду ничего не понятно - названия методов и классов по-русски - жутчайший моветон, особенно вкупе с комментариями по-английски. Желания разбирать такой код нет.
Ну и как таковой вопрос до конца неясен - что именно не получается из двух задач: отлов нажатия на мувик или передача данных?

ktotam 04.12.2006 20:22

Вот все по английски, в библиотеке объект, “a” –кружок, с помощью класса создаться объект
Код:

var pepsi: Sprite =new Sprite (_root,"a","pepsi",5,100,100);
var cola: Sprite =new Sprite (_root,"a","cola",6,200,200);

то есть на экране появляется 2 кружокa,
что надо написать в классе чтобы я мог написать что-то в роде:
Код:

pepsi.onPress = function(){       
        fscommand("quit");
}
cola.onPress = function(){       
        attachMovie("a", "fanta", 1);
}



Код:

class Sprite{
private var _mc:MovieClipprivate
var _isActive:Boolean
function Sprite(timeline:MovieClip, sourceMc:String, nameMc:String, sloi:Number, px:Number, py:Number){
_mc = timeline.attachMovie(sourceMc, nameMc, sloi)
_mc._x = px
_mc._y = py
}
}


etc 04.12.2006 20:30

Код:

_mc.onRelease = function() {
  …
}

А если нужно перенаправить вызов в метод класса — нужно использовать Delegate, ищи на форуме примеры.

ktotam 05.12.2006 20:20

извените, я почитал про Delegate, попробывал, не получилось...
вот мой класс

Код:

class Bot{
        private var _mc:MovieClip
        function Bot(timeline:MovieClip, _Clip:String, px:Number, py:Number,func:Function){
                _mc =timeline.attachMovie("_Clip", "_Clip",1);
                _mc._x=px;
                _mc._y=_py;
                _mc.onPress = func();
        }
}

создаю объект, чтобы при нажатии вызывался новый
Код:

var a:Bot=new Bot(_root,«a»,10,10,_root.attachMovie("a","a2",5));
может, что не так пишу, прошу конкретной помощи

etc 06.12.2006 11:08

Код:

class Bot{
        private var _mc:MovieClip
        public function Bot(timeline:MovieClip, _Clip:String, px:Number, py:Number,func:Function){
                _mc =timeline.attachMovie("_Clip", "_Clip",1);
                _mc._x=px;
                _mc._y=_py;
                _mc.onPress = func;
        }
}

Код:

import mx.utils.Delegate;
botFunc = function() {
    _root.attachMovie("a","a2",5)
}
var a:Bot=new Bot(_root,"a",10,10,Delegate.create(this,this.botFunc));

А вообще так не делается.

з.Ы. На работоспособность не проверял.

ktotam 06.12.2006 20:20

Почетаемый __etc, неработоспособно, что делать, в чем обшибка? И что я за это тебе должен? :)


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

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