Форум 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=72326)

4thDimention 24.11.2005 14:48

Объектный совет
 
Доброе время суток Вам!!!
В ходе реализации одного проэкта у меня возникло небольшое затруднение.. помогите советом!
Разработка мини-игры а-ля Магазин одежды. Существует около 30 мувиков одежды, они должны обладать почти одинаковыми параметрами... и для всех необходимо назначить onRelease...
пробовал сделать так:

var obj:Object = {
this.prototype.onRelease:function()
{
trace("something is gooing on!");
},
drop_point_x:0,
drop_point_y:0,
lib_name: ""
}
var dress = new obj();


но компилятор ругается на функцию и на var dress...
Что и как мне сделать???

Nirth 24.11.2005 14:57

ты вообще понял что ты написал? у Object нету события onRelease , что означает :function() ? это ошибка синтаксическая, или вот это _y:0 ? купи книжек выучи синтаксис.

4thDimention 24.11.2005 15:33

по книге и учусь... =(
Цитата кода из книги Дмитрия Гурского "Action Script 2.0"

var obj:Object={a:l,b:2,func:function():Void {trace (a)}};
var a:String-"Привет"; // Создаем переменную, имя которой совпадает
// с именем свойства объекта obj
obj.func(); // Выводит: Привет (метод "видит" переменную)
trace(obj.a); // Выводит: 1 (свойство существует)


З.Ы. to Nirth :: это была не конструктивная критика =(

Nirth 24.11.2005 15:42

конструктивная критика стоит денег =)
присваивание переменным значения осуществаляеть через "=" , исключение - внутри обжекта.

иди читай книгу до конца =) а лучше сначала прочесть документацию.
потом возвращайся на форум

4thDimention 24.11.2005 16:11

ок, пасибо за "помощь"
так, для справки :: я и пытался создать объект...
Может кто-нибудь посоветует нормально что мне делать? как можно 30 мувикам присвоить onRelease... кроме цикла перебирающего массив...

St. Father 24.11.2005 16:58

можно засунуть их в класс... прочитай там про Object.registerClass

4thDimention 29.11.2005 16:00

пасибо! уже что-то... получился такой класс::
Код:

class ClassShop extends MovieClip
{
        var lib_name:String = "";
        var lib_name_tmp:String = "";
        var is_true:Boolean = false;
        var type_clothe:Number = 0;
        public function ClassShop()
        {
                var _alpha:Number = 90;
        }
        public function startDrag(tr:Boolean,sdleft:Number,sdtop:Number,sdright:Number,sdbot:Number)
        {
                this.startDrag = startDrag();
        }
        public function onRelease()
        {
                /*this._visible = false;
                Mouse.hide();*/
        }
        public function onRollOver()
        {
                this._alpha = 100;
        }
        public function onRollOut()
        {
                this._alpha = 90;
        }
        public function onPress()
        {
                this._visible = false;
                Mouse.hide();
                lib_name_tmp = lib_name+"_tmp";
                _root.attachMovie(lib_name, lib_name_tmp, _root.getNextHighestDepth());
                lib_name_tmp.startDrag(false, 0, 0, 800, 600);
        }
}

но при компиляции выдает ::Wrong number of parameters; startDrag requires between 1 and 6.
this.startDrag = startDrag();


а без определения startDrag :: There is no method with the name 'startDrag'.
lib_name_tmp.startDrag(false, 0, 0, 800, 600);


в чем косяк???

__i 29.11.2005 16:39

a nafiga ti его переписал?

немного совсем не то ты сделал %))

ты эти функции не трогай без дела

class ClassShop extends MovieClip
{
var lib_name:String = "";
var lib_name_tmp:String = "";
var is_true:Boolean = false;
var type_clothe:Number = 0;
public function ClassShop()
{
var _alpha:Number = 90;
setHandlers();
}
function setHandlers(){
this.onPress = function() //!!!!!!!!
{
this._visible = false;
Mouse.hide();
lib_name_tmp = lib_name+"_tmp";
_root.attachMovie(lib_name, lib_name_tmp, _root.getNextHighestDepth());
lib_name_tmp.startDrag(false, 0, 0, 800, 600);
}}
}


ну и остальное в помже духе

4thDimention 30.11.2005 12:11

сделал как ты советовол , получается что из 30 мувиков всего один реагирует правильно (как задано в классе)...
класс линкуется с мувиком посредством
for (i=0; i<=30; i++)
{
clothe_up_up[i].__proto__ = ClassShop.prototype;
clothe_up_up[i].constructor = ClassShop;
clothe_up_up[i].constructor.apply(dress);
}
// код нашел на форуме же.. если кто-нить объяснит что он значит, буду благодарен.. а то с прототипами не дружу...
т.е. в массиве перечислены все мувики...
када делал через pivate function то все мувики вели себя нормально... хз в чем дело...

__i 30.11.2005 13:11

А ручками написать нельзя без вот этих кодов ? заходишь в библиотеку, выбираешь свой мувик - свойства - адвансед - и там есть поле для ввода соответствующего класса ввел, и забыл про все печали и все правильно реагирует


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

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