Показать сообщение отдельно
Старый 05.12.2011, 20:56
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 9  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
>> ведь этот аппарат вроде приеним к конкретному объекту - к примеру - к готовому 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; }
 
}