Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > ActionScript 3 > проблема с пакетами


Автор: Shark 13.6.2010, 11:54
пишу код:
Код

package 
{ 
    import flash.display.Sprite; 
    import flash.text.*; 
    import flash.events.MouseEvent; 
 
    public class TextScrollExample extends Sprite 
    { 
        private var myTextBox:TextField = new TextField(); 
        private var myText:String = "Hello world and welcome to the show. It's really nice to meet you. Take your coat off and stay a while. OK, show is over. Hope you had fun. You can go home now. Don't forget to tip your waiter. There are mints in the bowl by the door. Thank you. Please come again."; 
 
        public function TextScrollExample() 
        { 
            myTextBox.text = myText; 
            myTextBox.width = 200; 
            myTextBox.height = 50; 
            myTextBox.multiline = true; 
            myTextBox.wordWrap = true; 
            myTextBox.background = true; 
            myTextBox.border = true; 
 
            var format:TextFormat = new TextFormat(); 
            format.font = "Verdana"; 
            format.color = 0xFF0000; 
            format.size = 10; 
 
            myTextBox.defaultTextFormat = format; 
            addChild(myTextBox); 
            myTextBox.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownScroll); 
        } 
 
        public function mouseDownScroll(event:MouseEvent):void 
        { 
            myTextBox.scrollV++; 
        } 
    } 
}


взят от сюда http://help.adobe.com/ru_RU/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7d8d.html

компилятор, гад, пишет это Монтажный кадр 1, слой "Слой 1", кадр 1, строка 2    1037: Пакеты не могут быть вложенными.

в чем проблема?
Flash CS5

Автор: SoWa 13.6.2010, 13:09
package  это уже типа класс. Класс в классе нельзя описывать в ActionScript.
Как вариант, можешь этот класс вынести отдельно и присоединять.

Автор: Shark 13.6.2010, 17:18
SoWa, а можно поподробнее???
новичок я smile
просто в CS4 с этим у меня проблем не было... скопировал, вставил, проверил.. и все работало.. а тут что-то не то smile, либо я кривой smile

Автор: bars80080 13.6.2010, 18:47
где находится файл с этим классом?


Цитата(SoWa @  13.6.2010,  13:09 Найти цитируемый пост)
package  это уже типа класс.

что-то не понял.

пакет - это пакет, набор файлов с классами. к примеру, в корневой директории находится главный файл:


project1/index.fla
priject1/index.as
project1/index.swf

классы сидящие в общедоступном пакете

Код

package {
    class first {
    }
}

находятся в папке, определённой как исходники (её надо указать в свойствах документа: настроки публикации, settings, source path/
обычно выбирают ту же директорию и папку src (традиционное место хранения, если все этому будут следовать, то всем будет гораздо легче работать с чужими исходниками)
в итоге класс first (единственный в файле, как того требует документация) будет находиться по пути:

project1/src/first.as

если мы хотим ещё один класс в общем пакете, то делаем ещё один файл

Код

package {
    class second {
    }
}

project1/src/second.as

если мы создаём класс в другом пакете, то мы выделяем для него соответствующую директорию

Код

package someone {
    class third {
    }
}

project1/src/someone/third.as

в пакет можно добавлять сколько угодно классов, главное, чтобы их было по одному на файл, имя файла должно быть именем класса, и все они должны лежать в папке с именем пакета.
иначе придётся очень долго мудохаться с путями при обращении к любым классам и переменным в этих пакетах
предположительно для разных пакетов можно использовать одинаковые имена, но не советую

соответственно, импортирование такого класса будет выглядеть из любого другого класса:
Код

    import someone.third


ну, остаётся упомянуть, что клип связанный с подобным классом должен иметь запись для поля linkage class:
someone.third

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)