![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Цитата:
нет в AS статичных классов, как нет никаких хитрых чудес при определении документ класса (по сути он всегда есть, только когда он явно не определен IDE\компилятор генерят его сами) Цитата:
вот смотри package { import flash.display.DisplayObject; import flash.display.Sprite; public class Main extends Sprite { public var timeScale:TimeScale; public function Main():void { timeScale = new TimeScale(this); } public function tracer():void { trace( "Main.tracer" ); } } } import flash.display.Sprite; class TimeScale extends Sprite { public function TimeScale(main:Main) { // на этот момент main.timeScale еще не определена // все происходит до присваивания timeScale ссылки на экземпляр trace( "main.timeScale : " + main.timeScale );// main.timeScale : null // но сам-то main в порядке trace( "main : " + main );// main : [object Main] // и методы его тоже main.tracer();// Main.tracer } } |
|
|||||
|
Регистрация: Mar 2012
Адрес: г.Новосибирск
Сообщений: 381
|
Тогда почему когда я класс документа делаю Main у меня дети не видят публичные функции Main (точнее видят ,но не вызывают), видят только статичные.? Пример в 5 посте.
|
|
|||||
|
Цитата:
Добавлено через 6 минут Цитата:
package classes.timeScale { import classes.Main; public class TimeScale extends TimeScaleDragger { public function TimeScale() { var obj1:Sprite = new Sprite(); this.addChild(obj1); } } } а здесь в Main лишняя закрывающая скобка, вначале. Этот пример вообще должен выбрасывать ошибку. |
|
|||||
|
Регистрация: Mar 2012
Адрес: г.Новосибирск
Сообщений: 381
|
5 пост писал в качестве примера "на коленке", ошибся немного , извиняюсь, исправил, суть в том что document class = Main, он добавляет в себя obj1, а obj1 добавляет в себя obj2, а затем я из obj2 обращаюсь к Main через root и у меня не вызываются публичные методы Main, ошибка, как будто они приватные.
|
|
|||||
|
пример, использующий недоступные классы, нельзя запустить и увидеть в чем трабл
вот попытка реконструировать твою структуру, но она почему-то работает попробуй поломать, чтоб перестала, может тогда разберемся package classes { import classes.timeScale.TimeScale; import flash.display.Sprite; public class Main extends Sprite { public function Main() { drawTimeScale(); } private function drawTimeScale():void { var timeScale:TimeScale = new TimeScale(); addChild(timeScale); } public function getVarFromDateScale():void { trace( "Main.getVarFromDateScale" ); } } } package classes.timeScale { import flash.display.Sprite; public class TimeScale extends Sprite { public function TimeScale() { var obj1:Obj1 = new Obj1(); this.addChild(obj1); } } } package classes.timeScale { import flash.display.Sprite; public class Obj1 extends Sprite { public function Obj1() { var obj2:Obj2 = new Obj2(); this.addChild(obj2); } } } package classes.timeScale { import classes.Main; import flash.display.Sprite; import flash.events.MouseEvent; public class Obj2 extends Sprite { public function Obj2() { this.addEventListener(MouseEvent.CLICK, onMClick); this.graphics.beginFill(0xFF0000); this.graphics.drawRect(0, 0, 60, 60); } public function onMClick(e:MouseEvent):void { (this.root as Main).getVarFromDateScale(); // Main.getVarFromDateScale } } } |
|
|||||
|
Регистрация: Mar 2012
Адрес: г.Новосибирск
Сообщений: 381
|
странно, у меня тоже работает. а когда документу присваиваешь класс нужно еще какие-то настройки выставлять во flash cs5 или просто тупо в свойтвах документа присваеваешь ему класс и все должно работать? а то заметил такую закономерность: качаю исходник чужой, сохраняю его в другую папку, копирую туда свой код - не работает, прям в исходник вставляю свой код - работает.
|
|
|||||
|
Регистрация: Mar 2012
Адрес: г.Новосибирск
Сообщений: 381
|
ну да прописываю там classes.Main
|
![]() |
![]() |
Часовой пояс GMT +4, время: 17:01. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|