связь fla и as

То что касается флеша, но не касается ВКонтакте API. Например проблемы при создании прыгающего мячика.
Аватара пользователя
bodnar
Модератор
Модератор
Сообщения: 1399
Зарегистрирован: 03 апр 2010, 06:41

Re: связь fla и as

Сообщение bodnar »

На сцене? Причем тогда тут пакеты? Пакеты это пространство имен для внешних .as файлов.
Аватара пользователя
GrafMine
Сообщения: 24
Зарегистрирован: 11 ноя 2010, 00:05

Re: связь fla и as

Сообщение GrafMine »

Как вызвать из Main функцию draw­Par­al­lelepiped ?
Только объясните пожалуйста детально :oops:

Код: Выделить всё

private function  drawParallelepiped() : void{var w: Number = 100; var h: Number = 50; var s: Number = 2; var px: Number = 100; var py: Number = 50;  var back: Sprite = this.drawTetragon(new Point(w, 0), new Point(w, h),new Point(0, h), new Point(0, 0)); var front: Sprite = this.drawTetragon(new Point(w * s, 0), new Point(w * s, h * s),new Point(0, h * s), new Point(0, 0), 0.5);  var parallelepiped: Sprite = new Sprite();parallelepiped.addChild(back);parallelepiped.addChild(front); front.x = px; front.y = h + py;  this.addChild(parallelepiped);}
Аватара пользователя
bodnar
Модератор
Модератор
Сообщения: 1399
Зарегистрирован: 03 апр 2010, 06:41

Re: связь fla и as

Сообщение bodnar »

Как мы должны догадаться в каком классе описан этот метод?
Создаете объект, вызываете у этого объекта описанный вами метод.

Код: Выделить всё

 var test = new SomeClass();test.drawParallelepiped(); 
Аватара пользователя
GrafMine
Сообщения: 24
Зарегистрирован: 11 ноя 2010, 00:05

Re: связь fla и as

Сообщение GrafMine »

вот класс Main.as :

Код: Выделить всё

package{    import flash.geom.Point;    import flash.display.*;    import flash.events.Event;public class Main extends Sprite{     public function Main  ()    {     private function  drawParallelepiped() : void{/** Я подумал и решил, что вдруг захочется поизменять размеры* и завел под все, что можно переменные. Это удобно, и быстрее*/var w: Number = 100; // widthvar h: Number = 50; // heightvar s: Number = 2; // scalevar px: Number = 100; // padding X; некий "отступ" по иксуvar py: Number = 50; // padding Y; /** Тут мы уже рисуем 6 четырехугольников, но не со смещенными куда-то* координатами, а такие, какие есть. А потом мы их передвинем*/var back: Sprite = this.drawTetragon(new Point(w, 0), new Point(w, h),new Point(0, h), new Point(0, 0)); // самый дальнийvar front: Sprite = this.drawTetragon(new Point(w * s, 0), new Point(w * s, h * s),new Point(0, h * s), new Point(0, 0), 0.5); // самый передний var top: Sprite = this.drawTetragon(new Point(w, 0), new Point(px + w * s, py + h),new Point(px, py + h), new Point(0, 0), 0.5); // верхняя граньvar bottom: Sprite = this.drawTetragon(new Point(w, 0), new Point(px + w * s, py + h * s),new Point(px, py + h * s), new Point(0, 0), 0.5); // нижняя грань var left: Sprite = this.drawTetragon(new Point(px, py + h), new Point(px, h + py + h * s),new Point(0, h), new Point(0, 0), 0.5); // левая граньvar right: Sprite = this.drawTetragon(new Point(px + w * s - w, py + h),new Point(px + w * s - w, h + py + h * s), new Point(0, h),new Point(0, 0), 0.5); // правая грань var parallelepiped: Sprite = new Sprite();parallelepiped.addChild(back); // самое заднее, значит низший, так сказать, слойparallelepiped.addChild(bottom); // ну и так далее по степени видимости для глазаparallelepiped.addChild(left);parallelepiped.addChild(right);parallelepiped.addChild(top); // чтоб один объект перекрывал другойparallelepiped.addChild(front); // самое переднее, значит высший, так сказать, слой bottom.y = h; front.x = px; // смещаем фронтальный куб на паддинг по иксуfront.y = h + py; // а тут на высоту тыльной стороны + на паддинг right.x = w; this.addChild(parallelepiped);} private function drawTetragon(p1: Point, p2: Point, p3: Point, p4: Point,alpha: Number = 1) : Sprite{var color: Number = Math.random() * 0xffffff; // Да, это рандом, неопределенное число// очень хорошая вещь, некоторые ею даже думают. Статическая функция random() класса// Math выдает произвольное число от нуля до единицы, на это число можно умножить все,// что угодно, хоть на 100 и получать процентную вероятность. Но мы умножаем на// максимальный цвет, 0xffffff, и получим любое число (цвет), от черного до белогоvar spr: Sprite = new Sprite();spr.graphics.lineStyle(1, 0, 1); // толщина в 1 пиксель, нулевой цвет (черный),// полностью непрозрачноеspr.graphics.beginFill(color, alpha); // начинаем закрашивать область, а там уж что// нарисуем, то и закраситсяspr.graphics.lineTo(p1.x, p1.y); // рисуем по координатам, это прикольней, мне кажетсяspr.graphics.lineTo(p2.x, p2.y);spr.graphics.lineTo(p3.x, p3.y);spr.graphics.lineTo(p4.x, p4.y);spr.graphics.endFill(); // заканчиваем закрашивать return spr; // возвращаем нарисованный спрайт}}}}
Ошибки:
Line 12 1013: Атрибут "private" можно использовать для определений свойств класса.
Line 62 1013: Атрибут "private" можно использовать для определений свойств класса.
Если поменять на Public:
1114: Атрибут "public" может использоваться только внутри пакета.
Аватара пользователя
bodnar
Модератор
Модератор
Сообщения: 1399
Зарегистрирован: 03 апр 2010, 06:41

Re: связь fla и as

Сообщение bodnar »

почему у вас все методы находятся внутри метода-констркутора?
Аватара пользователя
GrafMine
Сообщения: 24
Зарегистрирован: 11 ноя 2010, 00:05

Re: связь fla и as

Сообщение GrafMine »

Хм,а зачем тогда вообще нужен он в данном случае, оставить его пустым?

Код: Выделить всё

public  function Main  (){}// так?
1180: Вызов предположительно неопределенного метода addFrameScript.
Аватара пользователя
bodnar
Модератор
Модератор
Сообщения: 1399
Зарегистрирован: 03 апр 2010, 06:41

Re: связь fla и as

Сообщение bodnar »

если он будет пустой, то ничего не произойдет. Вы хоть одну книгу или урок по actionscript прочитали?
Аватара пользователя
GrafMine
Сообщения: 24
Зарегистрирован: 11 ноя 2010, 00:05

Re: связь fla и as

Сообщение GrafMine »

Я уже как месяц читаю и смотрю видео-уроки ,и вроде бы уже разобрался, ну все проблемы сводятся к классам и вызовов из них функций...
Аватара пользователя
bodnar
Модератор
Модератор
Сообщения: 1399
Зарегистрирован: 03 апр 2010, 06:41

Re: связь fla и as

Сообщение bodnar »

Тогда почему вы спрашиваете зачем тут конструктор и нужно ли его оставлять пустым.
Каких таких функций? Тут есть только методы. (не только конечно, но в данном случае методы) Методы бывают у объектов. Значит чтобы вызвать метод нам нужен объект(точнее ссылка на объект) который этим методом обладает.

upd еще метод можно вызывать у самого объекта.
Аватара пользователя
GrafMine
Сообщения: 24
Зарегистрирован: 11 ноя 2010, 00:05

Re: связь fla и as

Сообщение GrafMine »

Ну слово функции у меня осталась привычка с Delphi, думаю что "функция draw­Par­al­lelepiped" звучит не так уж критично с "метод draw­Par­al­lelepiped",хотя согласен правильно говорить метод :)
Ну вот смотри проверь меня на понимание, может я что-то не так понимаю :

Код: Выделить всё

var test = new Main.drawParallelepiped(); //Здесь переменной Test присваеваем объект(Main) в каторой есть метод(drawParallelepiped) test.parallelepiped();// тут переменная Test является как проводником к внутренности (drawParallelepiped) и через точку мы вызываем то что нам надо,например  переменная (parallelepiped
Ну ошибки те же...
Ответить