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

Anabel 05.09.2013 19:01

Импортирование классов
 
Я пишу в окнах кадров, так как классы мне не совсем понятные. Но хочу перейти всё же на классы (постепенно!). Можно написать класс, поместить в папку и папку импортировать как пакет в код и там уже использовать возможности класса. А можно написать класс и импортировать именно его? Не назначать основным в окошке справа, а именно импортировать(!)?

fish_r 05.09.2013 19:23

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

Anabel 06.09.2013 08:18

Была жалкая попытка. Но возникли небольшие трения:
Код AS3:

implicitImports, строка 1        1172: Не удалось найти определение __AS3__.vec:Vector.
implicitImports, строка 3        1172: Не удалось найти определение flash.desktop.

Код класса:

Код AS3:

package {
        import flash.desktop.*
        import flash.display.*
        public class Proba extends MovieClip {
                public function Proba{
                        pah.x += 300
                }
        }
}

Проблема в том, что это неявный импорт, а как сделать явным?

caseyryan 06.09.2013 08:21

Цитата:

Проблема в том, что это неявный импорт, а как сделать явным?
Какой неявный импорт?
import flash.display.*; это уже явный импорт

MikroAcse 06.09.2013 16:25

1. Версия флешплеера, которую Вы используете, устарела, в ней еще нету Vector.
2. flash.desktop.* не нужен, тем более он есть только в AIR по-моему.

Anabel 07.09.2013 01:33

Но у меня заточка под флеш 11.2, а вектор появился в 10-м! Можете подсказать как сделать рабочим мой небольшой код?

Akopalipsis 07.09.2013 01:46

У Вас в коде ошибка, может в этом дело? нет()

belv 07.09.2013 01:47

А в кадре, что у Вас написано, по-моему этот код к ошибкам никакого отношения не имеет.

Akopalipsis 07.09.2013 01:48

Цитата:

по-моему этот код к ошибкам никакого отношения не имеет.
А если у конструктора нет скобок, это не ошибка? И как они называются?)

belv 07.09.2013 01:52

Вы посмотрите на ошибки, они из-за скобок?

caseyryan 07.09.2013 10:33

Цитата:

А если у конструктора нет скобок, это не ошибка?
Это будет ошибкой, если конструктор принимает какие-то обязательные аргументы. Например сделать так
new BitmapData; не получится, так как у него есть обязательные параметры.
А вообще, лучше всегда использовать скобки.

belv 07.09.2013 13:33

Цитата:

А если у конструктора нет скобок, это не ошибка?
Это конечно же ошибка, но такого типа.
Line 5 1084: Syntax error: expecting leftparen before leftbrace.
Скобки можно не указывать, когда создаете экземпляр объекта без параметров в конструкторе.
Код AS3:

var obj = new Main;

равносильно
Код AS3:

var obj = new Main();

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

Anabel 07.09.2013 22:09

Итак, с компиляцией проблем нет, но на экране действий тоже нет.
Есть объект, который хочу переместить, но он не перемещается. Что делать?

Код AS3:

package {
        import flash.display.*;
        public class Proba extends MovieClip {
 
                public var i = 0;
                public var u = 8;
                public function Proba (){
                        if (i < u) {
                                kub.x += 50;
                                i++;
                        }
                }
        }
}


Akopalipsis 07.09.2013 22:19

Такое условие вроде и не должно не чего двигать. У Вас прри инициализации класса выполняется условие i<u так как она верно, на что указывают значения переменных. А затем вы прибавляете координаты какого то мифического обьекта под названием kub. По идее должна быть ошибка. Если её нет, то это плохо.

Добавлено через 1 минуту
И немного уточнить, у Вас это главный класс приложения или Вы этот класс импортируете и используете в кадрах?

Anabel 07.09.2013 22:40

Секундочку:
Код AS3:

if (i < u) {

- эта строка отвечает, что если условие правильно, то должен выполняться следующий код:
Код AS3:

kub.x += 50;
i++;

Почему это условие не должно ничего двигать?

Файл просто в одной папке с фла-файлом. Никак явно не импортирую. Просто использую в кадрах. И объект kub находиться в фла-файле, а операции должны происходить благодаря классу.

Akopalipsis 07.09.2013 23:19

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

belv 07.09.2013 23:50

Возможно Вы хотели сделать так.
Код класса.
Код AS3:

package  {
        import flash.events.Event;
        import flash.display.MovieClip;
        public class Probe extends MovieClip{
                private var cub:MovieClip;
                private var u:int = 300;
                public function Probe(cub) {
                        this.cub = cub;
                        addEventListener(Event.ENTER_FRAME, enterFrameListener);
                }
                private function enterFrameListener(e:Event):void
                {
                        if(cub.x < u)
                        {
                                cub.x += 5;
                        }
                }
        }
}

Код в кадре
Код AS3:

import Probe;
var prob = new Probe(cub);

Ну и конечно должен быть на сцене мувик с именем cub в инспекторе свойств.Этот пример касается конкретно импорта, я бы делал его как главный класс и полностью ушел от кадров.

Anabel 08.09.2013 01:55

Наконец! Примите большую благодарность от меня!
P.S. На кадры не ухожу из-за того, что очень много ошибок и сложные коды компилировать не могу (неправильные). Так что таким методом перекачиваться буду. Ещё раз спасибо всем и отдельно belv!


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

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