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

EXFlash 16.05.2009 21:52

Один класс не видит другой. Область видимости классов
 
Прошу заранее прощения, если вопрос поднимался.

Ситуация. Есть, скажем, класс работы с данными, В данном случае это SQLite
(поясню, зачем: я работаю с Zinc, использую базу SQLite, но если захочу поменять тип базы, чтобы не было с этим проблем)
Код AS3:

package com.db
{
        public class DBSQLite implements DBProxy { // DBProxy - интерфейс функций
                function DBSQLite(console:TextArea){
                }
                public function connect():Boolean { //Функция соединения с базой данных
                        trace('Содиняемся с базой...');
                        ...
                }
        }
}

Теперь, средставьте, что я создаю класс отладчика.
(поясню, зачем: я работаю с Zinc, во флеше я использую trace, а в Zinc отдельное окно с текстовым полем)
Код AS3:

package com.system
{
        public class Debugger{ // DBProxy - интерфейс функций
                public function log(obj:Object):void {
                        trace(obj);
                }
        }
}

Все это дело добавляем в главный класс
Код AS3:

package tests{
        import flash.display.Sprite;
        import com.db.DBSQLite;
        import com.system.Debugger;
 
        public class testas3 extends Sprite {
                public static var db:DBSQLite = new DBSQLite;
                public static var console:Debugger = new Debugger;
                public function testas3() {
                        db.connect(); //Это даже работает! :-)
                }
        }
}

И теперь главный вопрос.... Как мне обратиться к console.log() в классе DBSQLite хочу воспользоваться соим отладчиком(Debugger), вместо trace?
console.log('Содиняемся с базой...') - не работает
Код AS3:

package com.db
{
        public class DBSQLite implements DBProxy { // DBProxy - интерфейс функций
                function DBSQLite(console:TextArea){
                }
                public function connect():Boolean { //Функция соединения с базой данных
                        ???????????????????????????????????????????????
                        ...
                }
        }
}


Kuruki 16.05.2009 22:20

Цитата:

Код AS3:

db.connect();//Это даже работает! :-)


А ошибка о чем говорит?

Цитата:

Как мне обратиться к console.log()
Код AS3:

testas3.console.log();

Upd: не посмотрел, что DBSQLite в другом пакете лежит...
тогда лучше сделать так:
Код AS3:

public function testas3() {
console.log('Содиняемся с базой...');
db.connect(); //Это даже работает! :-)
}

чтобы не привязывать DBSQLite к testas3

EXFlash 16.05.2009 23:05

Код AS3:

testas3.console.log();

Спасибо огромное! Разобрался, работает. Но только, DBSQLite нужно инициализировать в конструкторе главного класса:
Код AS3:

        public class testas3 extends Sprite {
                public static var db:DBSQLite;
                public static var console:Debugger = new Debugger;
                public function testas3() {
                        db = new DBSQLite;
                        db.connect(); //Это даже работает! :-)
                }
        }



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

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