Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   события в классах (http://www.flasher.ru/forum/showthread.php?t=172259)

viktorami 05.12.2011 16:49

события в классах
 
недавно создавал тему, о использовании ООП в AS3 - почитал литературу - все достаточно просто. методы - все ясно. свойства - все ясно.
А вот как быть с событиями? никак не разберусь!
Если использовать обычный подход через addeventlistener - то как это применить к классу? ведь этот аппарат вроде приеним к конкретному объекту - к примеру - к готовому movieclip
а как это сделать - когда есть абстрактный класс? чтобы получить модель событий подобно c#?

in4core 05.12.2011 16:50

Если бы вы почитали литературу по АС3-ООП вопросов не возникло бы

viktorami 05.12.2011 17:01

а форум на что? хвастатся уже полученными знаниями?)

DaFive 05.12.2011 17:10

Не все прочитали. Вот этой книжки достаточно, чтобы ответить на все ваши вопросы: http://www.ozon.ru/context/detail/id/4121608/

КорДум 05.12.2011 17:12

Классы в AS3 события распространять не могут. Да и в C# я не встречал реального применения этому. Посему считаю это сомнительной "фичей".

goodguy 05.12.2011 19:07

Цитата:

а как это сделать - когда есть абстрактный класс? чтобы получить модель событий подобно c#?
Во-первых в АС3 нет абстрактных классов, во-вторых к чему тут сравнение с C#?
АС3 - не си шарп, а самостоятельный язык, со своими средствами выполнения различных задач
В ас3 события могут доставляться и приниматься экземплярами классов, которые унаследованы от EventDispatcher

Inet_PC 05.12.2011 19:45

Вы спросите, что не понятно, а лучше поищите по формулу форуму, миллион раз обсуждалось.

saikspaik 05.12.2011 20:16

Цитата:

Сообщение от Inet_PC (Сообщение 1049895)
а лучше поищите по формулу, миллион раз обсуждалось.

О да, новичкам определенно нужна формула, по которой они смогут найти то, что их интересует :D

silin 05.12.2011 20:56

>> ведь этот аппарат вроде приеним к конкретному объекту - к примеру - к готовому movieclip
а как это сделать - когда есть абстрактный класс? чтобы получить модель событий подобно c#?

в AS объекты тоже сами могут 'вещать' события, если об этом речь
с шарпом примерно такая аналогия
Код AS3:

using System;
using System.Windows.Forms;
using System.Diagnostics;
 
 
public class MainForm : Form
{
    public MainForm()
    {
        SomeClass obj = new SomeClass();
        obj.Change += new EventHandler(obj_Change);
        obj.prop = "test";
 
    }
    private void obj_Change(object sender, EventArgs e)
    {
        Debug.WriteLine("MainForm.obj_Change > target : " + sender + "; prop: " + (sender as SomeClass).prop);
        // MainForm.obj_Change > target : SomeClass; prop: test
    }
}
///////////////
class SomeClass
{
    public event EventHandler Change;
    string _prop;
    public string prop
    {
        set
        {
            _prop = value;
            Change(this, new EventArgs());
        }
        get { return _prop; }
    }
}

Код AS3:

package
{
        import flash.display.Sprite;
        import flash.events.Event;
 
        public class Main extends Sprite
        {
 
                public function Main():void
                {
                        var obj:SomeClass = new SomeClass();
                        obj.addEventListener(Event.CHANGE, obj_change);
                        obj.prop = "test";
 
                }
                private function obj_change(e:Event):void
                {
                        trace( "Main.obj_change > target : " + e.target +"; prop: " + (e.target as SomeClass).prop);
                        //Main.obj_change > target : [object SomeClass]; prop: test
 
                }
        }
}
///////////////////
import flash.events.*;
class SomeClass extends EventDispatcher
{
        protected var _prop:String;
        public function set prop(value:String):void
        {
                _prop = value;
                dispatchEvent(new Event(Event.CHANGE));
        }
        public function get prop():String { return _prop; }
 
}


viktorami 06.12.2011 13:05

не совсем понял зачем еще устанавливать это свойство с dispatchEvent разве недостаточно объявит только
addEventListener и фукнцию обработчик?


Часовой пояс GMT +4, время: 21:27.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.