![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Только начинаю осваивать работу с классами, пакетами и для меня составляет огромную трудность знать какие адобовские-флешевские классы надо импортировать для всяческих действий. А также эти ошибки в выводе, которые не дают скомпилироваться, но зато не указывают на место ошибки.
У меня есть два класса. С ссылками тоже были проблемы, но сейчас все уже ок. В одном классе вызывается другой, который называется Background. А хотя что я, покажу вам оба класса. Вот класс MainInit package src.site { import flash.display.MovieClip; import flash.display.DisplayObject; public class MainInit extends MovieClip { public function MainInit() { var back:Background = new Background(); addChild(back); } } } package src.site { import flash.display.Graphics; import flash.display.Shape; import flash.display.DisplayObject; import flash.display.MovieClip; import flash.display.Stage; public class Background extends MovieClip { public function Background():void { var ground:Number = new Number(); ground = stage.stageHeight; drawBuilding(1); } private function drawBuilding(type:Number) { var body:Graphics = this.graphics; switch (type) { case 1 : body.clear(); body.beginFill(0); body.drawRect(0,0,180,400); body.endFill(); } } } } Но если рисовать с помощью дополнительной функции - ничего не рисуется и ошибка "TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null"." словно указывает, что в классе Background "нифига не отрисовалось, приятель, и addChild-ить вообще-то нечего (в MainInit-е)". И я научился этому из другого кода, но если body сделать вместо graphics shape-ом, то код body.graphics.beginFill() (вместо сейчас стоящего body.beginFill()) не работает и говорит не к существующему свойству или функции обратился. Разве в шейпе или спрайте (он тоже такое выдает) нельзя графикой рисовать? |
|
|||||
|
он выдает эту ошибку не из-за graphics. С ними тут как раз все ок. А вот обращение к stage в конструкторе класса Background не допустимо. Стоит переделать так:
package src.site { import flash.display.Graphics; import flash.display.Shape; import flash.display.DisplayObject; import flash.display.MovieClip; import flash.display.Stage; public class Background extends MovieClip { public function Background() // убрал void. Типизировать конструктор не обязательно { addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event):void { var ground:Number = new Number(); ground = stage.stageHeight; // тут уже обращаться drawBuilding(1); } private function drawBuilding(type:Number):void // а вот тут как раз void нужен, хоть это и не вызовет ошибки { var body:Graphics = this.graphics; switch (type) { case 1 : body.clear(); body.beginFill(0); body.drawRect(0,0,180,400); body.endFill(); } } } } |
|
|||||
|
Офигеть, спасибо.
Получается пока, грубо говоря, не появился ни на какой "сцене", нефиг сцену и спрашивать, как я понял. Еще раз спасибо! Тернистый тернистый путь классов и пакетов |
|
|||||
|
Регистрация: Sep 2010
Адрес: Ростов-на-Дону
Сообщений: 369
|
А еще можно ground параметром в конструктор передавать.
|
|
|||||
|
Кстати, насчет второй ошибки, о которой я говорил. Почему-то Shape или Sprite в функции не воспринимает команды рисования графики. Если не в классе но в обычном fla работать все ок, а тут этот код вызывает ошибку "не существующие свойства или методы":
|
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Оператор [] возвращает тип Object, а у Object нет свойства graphics. "В обычном fla" у Вас не включен строгий режим компиляции, и компилятор проверяет только синтаксические ошибки.
__________________
Reality.getBounds(this); |
|
|||||
|
КорДум прав, я допустил ошибку. Присваивание проходит отлично, у меня в коде допущена ошибка - вместо buildarray объявленного, я написал buldarray.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 20:15. |
|
|
« Предыдущая тема | Следующая тема » |
|
|