|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Apr 2014
Сообщений: 97
|
Как дать доступ к объекту другой функции в основном классе
Если вы создали в функции Main основного класса объект, то чтобы изменить его значение в другой функции этого класса что надо сделать.
Почему-то такой код работает (то есть меняет значение text1 c "Text" на "Hello" после запуска программы: package { /** * ... * @author Scorpion */ import flash.events.*; import flash.display.*; import flash.text.*; import myClasses.*; public class Main extends Sprite { public function Main() { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } public function init(): void { addChild(Image.addImage(0, 0, "background")); addChild(Image.addImage(0, 0, "head")); addChild(Image.addImage(0, 200, "menuline")); var text1: TextF = new TextF; addChild(text1.addText("Text", 100, 200)); text1.changeText("Hello"); var button: Button = new Button; addChild(button.addButton(200, 200)).addEventListener(MouseEvent.CLICK, funButton); } } } package { /** * ... * @author Scorpion */ import flash.events.*; import flash.display.*; import flash.text.*; import myClasses.*; public class Main extends Sprite { public function Main() { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } public function init(): void { addChild(Image.addImage(0, 0, "background")); addChild(Image.addImage(0, 0, "head")); addChild(Image.addImage(0, 200, "menuline")); var text1: TextF = new TextF; addChild(text1.addText("Text", 100, 200)); var button: Button = new Button; addChild(button.addButton(200, 200)).addEventListener(MouseEvent.CLICK, funButton); } public function funButton(e:MouseEvent): void { text1.changeText("Hello"); } } } package myClasses { /** * ... * @author Scorpion */ import flash.events.*; import flash.display.*; import flash.text.*; public class TextF extends Sprite { public var text: TextField = new TextField; public function addText(value: String, x: int, y: int): TextField { text.text = value; text.x = x; text.y = y; text.autoSize = "left"; var format: TextFormat = new TextFormat; format.size = 40; format.font = "Monotype Corsiva"; text.setTextFormat(format); return text; } public function changeText(newText: String): void { text.text = newText; var format: TextFormat = new TextFormat; format.size = 40; format.font = "Monotype Corsiva"; text.setTextFormat(format); } } } Добавлено через 15 минут Стоп, ко мне пришло озарение ... надо было public var text1: TextF = new TextF; прописать не в функции Main, а в классе. А без этого обеспечить доступ переменной из функции в функцию нельзя? Добавлено через 20 минут Видно нельзя ... но почему-то никто тут мне не говорил, что объявлять переменные, которые используются в нескольких функциях класса, надо в классе, а не в главной функции((( |
|
|||||
Регистрация: Apr 2014
Сообщений: 97
|
Да учу уже, учу.
Чтоб симитировать переход между страницами сайта, когда программируешь в классах ... в Adobe Flash CS6 просто размещал разные страницы в разных кадрах и использовал кнопки перехода между кадрами, которые вызывали функцию gotoAndPlay(номер кадра) ... а в Flash Develop ... Это значит создать кнопки, которые будут делать другие элементы видимыми или невидимыми? |
|
|||||
Если вам недостаточно примеров работы с ООП, то могу лишь в очередной раз отправить читать Мука.
Если вы нарочно читаете между строк и пропускаете мимо ушей примеры, то тут мне ничего не поделать. Вот, допустим, у вас есть как бы область в программе, например, форма входа. Форма входа - это отдельный класс, который вы добавляете на сцену в классе страницы входа. В классе формы входа у вас есть 3 вовсе не связанных между собой элемента, 2 текстовых поля с кастом настройками(возможно, при помощи наследования), и одна кнопка, которая может быть экземпляром класса Button, который я привёл вам в прошлой теме, а вы просто пропустили его мимо глаз, будто я ничего не писал.(Хотя потратил я минут 30, чтобы запустить среду, подумать над архитектурой и написать 2 класса)
__________________
There is no thing in this world that is not simple. |
|
|||||
Регистрация: Apr 2014
Сообщений: 97
|
Ну то есть те 3 элемента в классе формы вешаются на один Спрайт, а в главной классе мы делаем этот Спрайт видимым или нет, да?
|
|
|||||
В главном классе мы "переключаем" классы как вкладки.
Один класс = 1 вкладка, и лишь вы решаете, какие вам классы понадобятся внутри, и выделять ли для этого отдельный класс(хотя точнее вы решаете это в определённом контексте). Например, кнопку можно нарисовать прямо в Main и повесить на неё события клика. Но вы же не будете это делать, верно? Добавлено через 5 минут Переключать вкладки можно разными способами. Как вариант, можно добавить метод очистки контента, который будет удалять текущий класс со сцены, и под добавление каждого класса новый метод(а слушатель кликов можно свитчем повесить). И при каждом клике сначала очищаем контент, потом свитч на какая кнопка нажата, в нём вызов метода.
__________________
There is no thing in this world that is not simple. |
Часовой пояс GMT +4, время: 20:45. |
|
« Предыдущая тема | Следующая тема » |
|
|