![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: May 2011
Сообщений: 221
|
Положим есть главный класс, в нем есть функция
И сторонний класс Почему таким образом невозможно вызвать функцию? Как это правильно сделать? |
|
|||||
|
Сделайте функцию статичной. Тогда её можно будет вызвать из другого класса.
|
|
|||||
|
блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
|
Главный класс - по сути такой же, как и остальные. Это означает, что экземпляров такого класса может быть больше одного. И у каждого свои переменные, которые, возможно, используются в функции doSmth.
И вот потому что из записи - невозможно понять, функцию КАКОГО именно экземпляра вызвать - ничего подобного нет. И эта, почитайте про клчевое слово static.
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают. |
|
|||||
|
Регистрация: Nov 2009
Сообщений: 300
|
Можно передать в Smth ссылку на главный класс.
|
|
|||||
|
Регистрация: May 2011
Сообщений: 221
|
saikspaik можно по подробнее как передать ссылку на главный класс?
-De- Можно ли как-нибудь явно указать на требуемый экземпляр главного класса? Насчет статика в курсе, но вроде как потом никаких изменений вносить нельзя. Используя статик, все так же передавть параметры в функцию? |
|
|||||
|
можно сделать этот "главный" класс (другой вопрос, в чем его главность в отличии от остальных) синглтоном, тогда к нему будет доступ отовсюду, НО нужно ли это в действительности...
Что Вы хотите сделать ? |
|
|||||
|
Регистрация: May 2011
Сообщений: 221
|
у меня есть P2P чат для он-лайнового тетриса, в нем юзер-лист представлен в виде объектов, при двойном клике на которые, выбранному пользователю отправляется предложение поучаствовать в поединке.
Соответственно у меня есть главный класс, в котором написана функция отправки сообщений (они бывают разных типов) и есть класс участника, который должен отправлять сообщения при двойном клике на себя. Пойду полистаю статью про синглтон, спасибо за информацию. |
|
|||||
|
Регистрация: Nov 2009
Сообщений: 300
|
Цитата:
А потом уже в Smth пользуешься ссылкой, это будет твой главный класс. |
|
|||||
|
да оставьте бедный рут в покое )..из айтема юзера по которому кликнули диспатчите событие..подписав его на это событие в руте..в нем в обработчике и отправляйте что вам нужно куда нужно.
см. EventDispatcher,Event
__________________
http://cleptoman.free-lance.ru achivements: дважды благословлен на воровство. осеяный благодатью |
|
|||||
|
Синглтон тут не нужен
Main package { import flash.display.MovieClip; import flash.display.Sprite; public class Main extends MovieClip { private var userItemsSprite:Sprite=new Sprite(); private var users:Array=new Array(); public function Main() { addChild(userItemsSprite); for(var i:int=0;i<4;i++) { var newUserItem:UserItem=new UserItem(i); userItemsSprite.addChild(newUserItem); newUserItem.x=200; newUserItem.y=50+i*70; } addEventListener(UserItemEvent.USERITEM_DOUBLE_CLICK,userItemDoubleClickHandler,true); } private function userItemDoubleClickHandler(event:UserItemEvent):void { trace("USER id "+event.messageData.data+" double click"); } } } package { import flash.display.MovieClip; import flash.events.Event; import flash.events.MouseEvent; public class UserItem extends MovieClip { private var _id:int; public function UserItem(id:int) { _id=id; addEventListener(Event.ADDED_TO_STAGE,addedToStageHandler); } private function addedToStageHandler(event:Event):void { buttonMode=true; doubleClickEnabled=true; addEventListener(MouseEvent.DOUBLE_CLICK,doubbleClickHandler); } private function doubbleClickHandler(event:MouseEvent):void { dispatchEvent(new UserItemEvent(UserItemEvent.USERITEM_DOUBLE_CLICK,_id)); } } } UserItemEvent package { import flash.events.Event; public class UserItemEvent extends Event { public var messageData:Object; public static const USERITEM_DOUBLE_CLICK:String="userItemDoubleClick"; public function UserItemEvent(type:String,data:Object=null) { super(type,data); var messObj:Object=new Object(); messObj.data=data; this.messageData=messObj; } } } |
![]() |
![]() |
Часовой пояс GMT +4, время: 15:11. |
|
|
« Предыдущая тема | Следующая тема » |
|
|