![]() |
Воздействие методов класса на объекты в Main
Как сделать так, чтоб методы класса могли воздействовать на объекты в Main. Вот такой код у мня получился ...
Класс Button Код AS3:
Код AS3:
|
Цитата:
Нормальный выход из ситуации - заставить Main слушать события кнопки, и по событию клика выводить в text1 информацию. Вы заставляете кнопку слушать саму себя. Это само по себе не может считаться ошибкой, но мэйн ничего не будет знать о том, что происходит с кнопкой, нафик она такая кнопка, спрашивается? Тут как бы простая логика, Я, мэйн, даю пользователю кнопку, чтобы он на нее нажал, и слушаю, когда он это сделает. Чтобы отреагировать на клик соответственно логике, которую я, мэйн, знаю. Кнопка - это просто элемент интерфейса, ее задача в подавляющем большнстве случаев - уведомить родителя о том, что на нее нажали и все. Замечу, что держать всю логику приложения в одном классе Main - не самая удачная идея, если приложение не "просто поиграться с классами". Оу... кажись опять маячит на горизонте MVC :) |
Ну я попробовал перенести слушатель событие в Маин
Код AS3:
Не держать всю логику программы в Main ... эт как? |
PHP код:
Добавлено через 4 минуты Если вы не поняли принципы ООП, которые я вам попытался объяснять из прошлой темы про текстовое поле, объясню на этом примере. Есть у вас меню в игре. В нём содержится экземпляр класса кнопки, который вы написали для этой программы. Это уже другое приложение, поэтому здесь нет никаких текстовых полей в классе Main. А кнопка лезет в Main и пытается изменить там какое-то значение, которого даже нет. К чему это? Кнопка должна выполнять функционал кнопки. Она должна нажиматься, отжиматься и быть DisplayObjectContainer'ом. Всё. Больше ей ничего не нужно знать. Это класс Main должен знать, что должно произойти при нажатии на добавленную в него кнопку. |
Ну так тем кодом я и пытался сделать, чтоб класс знал, что должно произойти. Создал слушатель клика для объекта button из пользовательского класса Button ну и функцию, какую он вызывает, взял из того же класса. А как надо было это написать правильно?
|
Никого вообще не смутило, что у него слушатель MouseEvent к битмапу добавляется?
|
Код AS3:
Код AS3:
|
То есть функция, которую вызывает слушатель, обязательно должна быть в Мейне (то есть в том же файле, что и сам слушатель). И нельзя из Мейна вызвать слушателем функцию из класса?
Добавлено через 43 минуты Ну вот я переделал по вашему образцу Код AS3:
Код AS3:
и что вообще значит это написание через точку в ретурне? |
Ай, прокололся.
Код AS3:
|
Где заменить?
|
Не позорьтесь. Где у вас функция возвращает кнопку?
|
В классе ...
Но что именно на это заменить я не понял. Какие строки. |
...
Функция возвращает кнопку после оператора return, в функции addButton. Или вы издеваетесь, или для вас программирование оказывается слишком сложным... Ну или у вас слишком мало опыта. Даже не знаю. В таком случае ГО уже читать Мука и не суйтесь в эти дела пока не научились правильно это делать. |
А, все, понял. Извините, что затупил. Кнопка сама теперь отображается, когда я просто её на экран вывожу, но когда задаю слушатель события и функцию, которую он запускает, все равно text1 оно не видит.
Код AS3:
Код AS3:
|
Цитата:
Сделайте статический метод и уберите расширение Sprite. Добавлено через 1 минуту А, точно... Вы же не знаете, что такое статический метод ... |
А что там рисоваться то должно? Я думаю, свойства спрайта мне пригодятся по мере расширения функционала. Меня больше волнует, почему не хочет меняться значения text1 после нажатия кнопки ... вернее даже не запускается прога, когда я такое запрограммировать пытаюсь.
|
Если вы хотели сделать класс кнопки, а не фабрику кнопок, то вы сделали нечто не то, в итоге получился какой-то непонятный с ненужными вещами код, который показывает, что у вас в голове каша.
Я вас уже 4 раза отправлял читать Мука и не возвращаться, почему вы не хотите взять, сесть и прочитать обо всём, что вы сейчас делаете и не имеете представления, что именно вы делаете? |
Да мне проект надо делать, сроки поджимают. Я был создал основу сайта в Adobe Flash CS6 в кадрах, теперь надо как можно быстрее переделать все это в классах.
|
Если вы планируете в будущем с ним ещё работать, то не советовал бы сейчас вам писать какой-либо код для проекта.
|
Ну так я по ходу создания проекта и планирую язык освоить. Так быстрее будет.
Добавлено через 22 минуты Лучше скажите как с той кнопкой разобраться, чтоб я по аналогии мог другие кнопки делать, а вкапываться в суть буду позже. |
Сделайте класс, который будет раздавать битмапы всем, а в кнопке напишите следующее:
Код AS3:
Естественно, в коде Код AS3:
A Main типа такого: Код AS3:
|
2misha, cмотрите, у вас логическая ошибка получилась, там где вы создаёте кнопку. В вашу кнопку не добавляется ничего. Как и сказали выше, она у вас пустая. Почему же?
Код AS3:
Код AS3:
Код AS3:
------------------------ Вам нужно либо добавить при создании кнопки на сцене Код AS3:
Код AS3:
Но вся эта схема получается запутанной. Вам действительно лучше использовать фабрику для создания кнопок (с помощью статических методов). |
samaha
Код AS3:
Код AS3:
|
В тот же класс кнопки можно прямо в конструктор передавать текст, который должен на кнопке отображаться.
Добавлено через 5 минут 2misha, да хватит уже всякую фигню писать! Пора бы уже задуматься над тем, что вам пишут и над тем, что пишите вы. Добавлено через 11 минут Код AS3:
Добавлено через 12 минут PHP код:
|
Да, Спрайт. Когда void поставил, тогда не работало тоже.
Добавлено через 2 минуты Код AS3:
|
| Часовой пояс GMT +4, время: 18:02. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.