Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   класс SWFAddressEvent и ошибка 5007 (http://www.flasher.ru/forum/showthread.php?t=157094)

Di_al 31.05.2011 16:47

класс SWFAddressEvent и ошибка 5007
 
Возникла такая проблема:
есть SWFAddressEvent.as,SWFAddress.as и main.fla файлом. При компиляции флеш выдает ошибку 5007:An ActionScript file must have at least one externally visible definition. И при этом указывает на класс SWFAddressEvent, который в наглую скачан с безграничных просторов интернета. Код класса выглядит следующим образом:
Код AS3:

import SWFAddress;
 
class SWFAddressEvent {
 
    public static var INIT:String = 'init';
    public static var CHANGE:String = 'change';
 
    private var _type:String;
    private var _value:String;
    private var _path:String;
    private var _pathNames:Array;
    private var _parameters:Object;
    private var _parametersNames:Array;
 
    public function SWFAddressEvent(type:String) {
        _type = type;
        _value = SWFAddress.getValue();
        _path = SWFAddress.getPath();
        _pathNames = SWFAddress.getPathNames();
        _parameters = new Array();
        _parametersNames = SWFAddress.getParameterNames();
        for (var i:Number = 0; i < _parametersNames.length; i++) {
            _parameters[_parametersNames[i]] = SWFAddress.getParameter(_parametersNames[i]);
        }       
    }
 
    public function get type():String {
        return _type;
    }
 
    public function get target():Object {
        return SWFAddress;
    }
 
    public function get value():String {
        return _value;
    }
 
    public function get path():String {
        return _path;
    }
 
    public function get pathNames():Array {
        return _pathNames;
    }
 
    public function get parameters():Object {
        return _parameters;
    }
 
    public function get parametersNames():Array {
        return _parametersNames;
    }   
}

Так как я только с недавних пор пытаюсь пересесть с Action Script2.0 на 3.0, то даже не особо могу определить в чем кроется ошибка: то ли в расположении файлов, то ли чего то не хватает в самом коде?

tsarapkabel 31.05.2011 18:30

Цитата:

class SWFAddressEvent {
Заменить на
Код AS3:

public class SWFAddressEvent {


Di_al 31.05.2011 18:38

Цитата:

Сообщение от tsarapkabel (Сообщение 1000129)
Заменить на
Код AS3:

public class SWFAddressEvent {


Хмммм..... а теперь он выдал новую ошибку, что атрибуты класса могут использоваться только внутри %(
Звучит вот так:
Код AS3:

C:\Users\Xmel\Desktop\Anls\5\SWFAddressEvent.as, Line 11        1114: The public attribute can only be used inside a package.


tsarapkabel 31.05.2011 21:49

В самом начале добавить

Код AS3:

package {

и закрыть в конце.

Di_al 31.05.2011 22:13

Пробовала. Увы ошибка 5007 сохраняется :(

tsarapkabel 31.05.2011 22:37

Вот так всё работает, при условии, что класс SWFAddress импортируется.
Код AS3:

package {
 
        import SWFAddress;
 
        public class SWFAddressEvent {
 
                public static var INIT:String = 'init';
                public static var CHANGE:String = 'change';
 
                private var _type:String;
                private var _value:String;
                private var _path:String;
                private var _pathNames:Array;
                private var _parameters:Object;
                private var _parametersNames:Array;
 
                public function SWFAddressEvent(type:String) {
                        _type = type;
                        _value = SWFAddress.getValue();
                        _path = SWFAddress.getPath();
                        _pathNames = SWFAddress.getPathNames();
                        _parameters = new Array();
                        _parametersNames = SWFAddress.getParameterNames();
                        for (var i:Number = 0; i < _parametersNames.length; i++) {
                                _parameters[_parametersNames[i]] = SWFAddress.getParameter(_parametersNames[i]);
                        }       
                }
 
                public function get type():String {
                        return _type;
                }
 
                public function get target():Object {
                        return SWFAddress;
                }
 
                public function get value():String {
                        return _value;
                }
 
                public function get path():String {
                        return _path;
                }
 
                public function get pathNames():Array {
                        return _pathNames;
                }
 
                public function get parameters():Object {
                        return _parameters;
                }
 
                public function get parametersNames():Array {
                        return _parametersNames;
                }
        }
}


Di_al 31.05.2011 22:55

Кхм.... И как же тогда вывернуться из сложившейся ситуации??? Попробовала поперемещать класс он либо говорит, что класс не в той папке, либо, если удалить, что класс не найден. Когда класс с ним рядом, ошибок импортирования нет. А 5007 все равно осталась :(

tsarapkabel 31.05.2011 23:12

Выложи SWFAddress.as (можно только код) и main.fla.

Di_al 31.05.2011 23:34

боюсь, что этим обойтись не выйдет-проект довольно масштабный. Выложила его вот сюда
сюда

tsarapkabel 01.06.2011 00:19

Всё работает. Ещё раз по порядку: 1) package 2) две фигурные скобки 3) public 4) сохраняемся 5) profit

Далее он выдаёт кучу ошибок "1046", однако если применить Автоформат (наверху 4-я иконка слева в редакторе кода Flash IDE), останутся только косяки с

Код AS3:

ExternalInterface.addCallback('getSWFAddressValue', SWFAddress, ;
                                function():String {return this._value});

Полагаю, что уход от анонимных функций решит эту проблему.


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

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