Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Классы и функции. Обращение к функции через объект. (http://www.flasher.ru/forum/showthread.php?t=175226)

MikroAcse 12.02.2012 22:17

Классы и функции. Обращение к функции через объект.
 
Я создаю свою библиотеку со всякими полезными классами.
Итак, возник к вопрос:
Как сделать так?:
Код AS3:

obj1.Func(obj2)

Ну вот как в классе узнать, что я обращаюсь к Func через obj1? (Надеюсь, правильно выразился)

Надеюсь на помощь.

Silicium 12.02.2012 22:32

Ссылку передать.

MikroAcse 12.02.2012 22:36

Цитата:

Сообщение от Silicium (Сообщение 1062413)
Ссылку передать.

Перевод в студию.

Прошу говорить понятней. Может, дать пример.

КорДум 12.02.2012 22:37

Цитата:

Ну вот как в классе узнать, что я обращаюсь к Func через obj1?
this же.

MikroAcse 12.02.2012 22:41

КорДум,
Код AS3:

package  MikroacseAS3Lib.hitObject{
 
        import flash.display.Bitmap;
        import flash.display.BitmapData;
 
        public class hitObject{
 
                public function hitObject() {
                        trace(this.name)
                }
 
        }
 
}

Вызов:
Код AS3:

import MikroacseAS3Lib.hitObject.*
 
mc1.hitObject()

Ошибка:
Код:

TypeError: Error #1006: hitObject не является функцией.
        at libtest_fla::MainTimeline/frame1()


КорДум 12.02.2012 22:44

Потому что это конструктор.
Код AS3:

var mc1:hitObject = new hitObject();
mc1.foo();

Код AS3:

package  MikroacseAS3Lib.hitObject{
        public class hitObject{
                private var name:String = "shalala";
 
                public function hitObject() {
                        trace(this.name)
                }
 
                public function foo():void {
                        trace(this);
                }
        }
}


MikroAcse 12.02.2012 22:46

КорДум,
Это я знаю, но вот как сделан, например, hitTestObject?
Код AS3:

mc1.hitTestObject(mc2)

Он же как-то узнает, что мы обращаемся к mc1?

elder_Nosferatu 12.02.2012 22:58

hitTestObject не только функция, но и родной метод для mc1 (метод описан в Классе объекта mc1 или его Классе, который тот наследует)

Добавлено через 1 минуту
Если вы хотите сделать библиотеку независимых функций, то они должны принимать ваши объекты (типа mc1), как параметры

Добавлено через 3 минуты
Пример:
Код AS3:

MyUtils.myHitTestObject(obj1, obj2)


MikroAcse 12.02.2012 23:11

elder_Nosferatu, спасибо.
Именно так я и думал.
Так даже удобней будет.
Сделать несколько функций в одном MyUtils.

Сложные вопросы - простые решения.

HardCoder 13.02.2012 00:19

Цитата:

Сообщение от MikroAcse (Сообщение 1062425)
elder_Nosferatu, спасибо.
Именно так я и думал.
Так даже удобней будет.
Сделать несколько функций в одном MyUtils.

Это в том случае, если класс MyUtils будет одной целенаправленности, например предоставляет методы работы с битмапдатами или др. Но, если в одном классе будет и метод hitObject(), который проверяет столкновения и getFPS(), который проверяет fps - то это плохое решение. Советую создать пакет, например: mikroAcseUtils. В этом пакете другие классы/пакеты и грамотно погруппировать их по целям, для которых они предназначены. Если появится функция, как например, getDefinitionByName(), которую нельзя отнести ни к одному классу, то сделать ее как отдельную функцию в пакете...


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

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