Иерархия папок во 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"

Надеюсь, это ответит на ваш вопрос!

Другие вопросы по тегам