Иерархия папок во flash cs5.5
Я пытаюсь создать иерархию папок во флэш-памяти, папки у меня есть
C:\ ик \ ас \ Уве \ Webgames\ математика
в математической папке у меня есть следующий файл с именем GameMath.as
package uk.ac.uwe.webgames.math{
public class GameMath {
// ------- Constructor -------
public function GameMath() {
}
// ------- Properties -------
const PI:Number = Math.PI;
// ------- Methods -------
public function areaOfCircle(radius:Number):Number {
var area:Number;
area = PI * radius * radius;
return area;
}
}
}
В папке веб-игр у меня есть файл с именем webgames_driver.fla
import uk.ac.uwe.webgames.math.GameMath;
import flash.text.TextField;
// Create a GameMath instance
var output:TextField = new TextField();
var aGameMathInstance:GameMath = new GameMath();
// you will need to create a dynamic textfield called
// output on the stage to display method return value
output.text=aGameMathInstance.areaOfCircle(5).toString();
addChild(output);
//trace(aGameMathInstance.areaOfCircle(1))
Однако я получаю следующие ошибки
Сцена 1, слой "Слой 1", кадр 1, строка 1 1172: определение uk.ac.uwe.webgames.math:GameMath не найден.
Сцена 1, слой "Слой 1", кадр 1, строка 1 1172: определение uk.ac.uwe.webgames.math:GameMath не найден.
Сцена 1, слой "Слой 1", кадр 1, строка 5 1046: тип не найден или не является константой времени компиляции: GameMath.
Сцена 1, слой "Слой 1", кадр 1, строка 5 1180: вызов возможно неопределенного метода GameMath.
Может ли кто-нибудь помочь, потому что я просто застрял, и я действительно новичок во флэш
1 ответ
Я изложу это в максимально простых и подробных терминах, не только для вашей выгоды, но и для тех, кто читает это и не имеет большого опыта в пользовательских классах. Лучше получить все это сейчас и избежать путаницы. (Я знаю, я хотел бы, чтобы некоторые люди дали мне такой уровень детализации по некоторым моим ранним вопросам...)
Код импорта предназначен для импорта класса.as. Как вы знаете, верхушка класса, у вас будет такой код (кроме моего собственного пользовательского класса, Trailcrest).
package trailcrest
{
public class sonus
{
Затем в моем файле.fla или.as я могу использовать
import trailcrest.sonus;
Я упомяну, что ваш.fla должен находиться в главном каталоге, который содержит все пользовательские классы, которые вы хотите импортировать. Мой формат файла примерно такой (папки в скобках):
MyProject.fla
MyDocumentClass.as
(trailcrest)
sonus.as
Обратите внимание, что имя моего пакета соответствует структуре папок, в которой папка, содержащая.fla, считается исходной точкой кода. Если бы я хотел использовать имя пакета, например trailcrest.v1, папки должны быть такими:
MyProject.fla
MyDocumentClass.as
(trailcrest)
(v1)
sonus.as
Затем я бы сослался на свой пользовательский класс, используя
import trailcrest.v1.sonus;
Обратите внимание, что MyProject.fla ДОЛЖЕН быть в главном каталоге этой структуры папок. Это связано с тем, что Flash не может искать в папках назад, только вперед. Так что, если бы у меня была структура, как...
(project)
MyProject.fla
MyDocumentClass.as
(trailcrest)
sonus.as
... тогда строка кода...
import trailcrest.sonus;
... будет искать путь "\project\trailcrest\sonus.as", который, как вы видите, не существует. Flash не может перейти в родительскую папку "\project\".
Ваша строка кода...
import uk.ac.uwe.webgames.math.GameMath;
... ищет путь "webgames \ uk \ ac \ use \ webgames \ math \ GameMath.as". (Помните, в коде предполагается, что папка, содержащая.fla, является отправной точкой, поэтому код буквально пытается перейти к "C: \ uk \ ac \ uwe \ webgames \ uk \ ac \ use \ webgames \ math \ GameMath". как")
Чтобы это исправить, вам нужно изменить пакет для GameMath.as:.
package math{
... и оператор импорта в вашем коде:
import math.GameMath;
Это все укажет на буквальный путь "C: \ uk \ ac \ uwe \ webgames \ math \ GameMath.as"
Надеюсь, это ответит на ваш вопрос!