Просмотр полной версии : Импортирование классов
Я пишу в окнах кадров, так как классы мне не совсем понятные. Но хочу перейти всё же на классы (постепенно!). Можно написать класс, поместить в папку и папку импортировать как пакет в код и там уже использовать возможности класса. А можно написать класс и импортировать именно его? Не назначать основным в окошке справа, а именно импортировать(!)?
классы расположенные вне пакетов ( в безымянном пакете ) не нужно импортировать, сразу можно использовать, т.е. достаточно поместить новый класс в папку с файлом фла ( или в папку определенную как корневая для кода проекта ), но импорт не есть инициализация ( мне кажется вы так думаете ) , это указание компилятору где искать класс описывающий тот или иной объект. Повторюсь, импорт не всегда нужен.
Была жалкая попытка. Но возникли небольшие трения:
implicitImports, строка 1 1172: Не удалось найти определение __AS3__.vec:Vector.
implicitImports, строка 3 1172: Не удалось найти определение flash.desktop.
Код класса:
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 по-моему.
Но у меня заточка под флеш 11.2, а вектор появился в 10-м! Можете подсказать как сделать рабочим мой небольшой код?
Akopalipsis
07.09.2013, 01:46
У Вас в коде ошибка, может в этом дело? нет()
А в кадре, что у Вас написано, по-моему этот код к ошибкам никакого отношения не имеет.
Akopalipsis
07.09.2013, 01:48
по-моему этот код к ошибкам никакого отношения не имеет.
А если у конструктора нет скобок, это не ошибка? И как они называются?)
Вы посмотрите на ошибки, они из-за скобок?
caseyryan
07.09.2013, 10:33
А если у конструктора нет скобок, это не ошибка?
Это будет ошибкой, если конструктор принимает какие-то обязательные аргументы. Например сделать так
new BitmapData; не получится, так как у него есть обязательные параметры.
А вообще, лучше всегда использовать скобки.
А если у конструктора нет скобок, это не ошибка?
Это конечно же ошибка, но такого типа.
Line 5 1084: Syntax error: expecting leftparen before leftbrace.
Скобки можно не указывать, когда создаете экземпляр объекта без параметров в конструкторе.
var obj = new Main;
равносильно
var obj = new Main();
Но лучше конечно использовать второй вариант, так как более наглядно, что создаете экземпляр.
Итак, с компиляцией проблем нет, но на экране действий тоже нет.
Есть объект, который хочу переместить, но он не перемещается. Что делать?
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 минуту
И немного уточнить, у Вас это главный класс приложения или Вы этот класс импортируете и используете в кадрах?
Секундочку:
if (i < u) { - эта строка отвечает, что если условие правильно, то должен выполняться следующий код:
kub.x += 50;
i++;
Почему это условие не должно ничего двигать?
Файл просто в одной папке с фла-файлом. Никак явно не импортирую. Просто использую в кадрах. И объект kub находиться в фла-файле, а операции должны происходить благодаря классу.
Akopalipsis
07.09.2013, 23:19
К сожалению тут я не знаю что ответить, я вообще не понимаю как кадры работаю.
Возможно Вы хотели сделать так.
Код класса.
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;
}
}
}
}
Код в кадре
import Probe;
var prob = new Probe(cub);
Ну и конечно должен быть на сцене мувик с именем cub в инспекторе свойств.Этот пример касается конкретно импорта, я бы делал его как главный класс и полностью ушел от кадров.
Наконец! Примите большую благодарность от меня!
P.S. На кадры не ухожу из-за того, что очень много ошибок и сложные коды компилировать не могу (неправильные). Так что таким методом перекачиваться буду. Ещё раз спасибо всем и отдельно belv!
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.