Platform: All
Version: Flash MX Professional 2004 7.2
Delegate�N���X���X�N���v�g��N���X��import����ƁA�C�x���g�����̃X�R�[�v�Ɗ����Ϗ�(delegate)���邱�Ƃ��ł��܂��B�V���^�b�N�X�́A���̂Ƃ���ł��B
import mx.utils.Delegate;
compInstance.addEventListener(�C�x���g��, Delegate.create(�X�R�[�v�I�u�W�F�N�g, ��));
|
�����X�R�[�v�I�u�W�F�N�g�́A�����Ɏw�肵�������ďo���X�R�[�v����肵�܂��B
Delegate.create()�̌ďo���ɂ́A��ʂɂӂ��̎g����������܂��B
- ����̃C�x���g���A�قȂ�ӂ��̊��ɑ���܂��B
�ڂ����́A��q�u1. �C�x���g�̊��ւ̈Ϗ��v�����Q�Ƃ��������B
- �������̒�`���ꂽ�X�R�[�v�Ōďo���܂��B
����addEventListener()�̈����Ƃ��ēn���ƁA���̊��̓��b�Z�[�W��z�M����R���|�[�l���g�C���X�^���X�̃X�R�[�v�Ŏ��s����[*1]�A�����`�����I�u�W�F�N�g�̃X�R�[�v�ł͌ďo����܂���B�ڂ����́A��q�u2. ���̃X�R�[�v�̈Ϗ��v�����Q�Ƃ��������B
[*1]addEventListener()���\�b�h�̑�2�����Ɋ����w�肷��ƁA���X�i�[���̓C�x���g��z�M����R���|�[�l���g�C���X�^���X�̃X�R�[�v�Ōďo����܂��B�ȉ��̃T���v���X�N���v�g�ł́A���X�i�[��clickHandler��Button�R���|�[�l���g�C���X�^���Xmy_btn�̃X�R�[�v�Ōďo�����̂ŁA���u���b�N({})����this��my_btn���Q�Ƃ��܂��B���������āAthis���Q�Ƃ��ă^�C�����C����̃v���p�e�B�ɃA�N�Z�X���悤�Ƃ���Aundefined���Ԃ���܂��B
// [�o��]�p�l���̕\��
_level0.my_btn,undefined,_level0.my_btn
// _root: �t���[���A�N�V����
// Button�R���|�[�l���g�C���X�^���Xmy_btn��z�u
import mx.controls.Button;
var my_btn:Button;
var nMyProperty:Number = 1;
function clickHandler(eventObject) {
trace([this, this.nMyProperty, eventObject.target]);
}
my_btn.addEventListener("click", clickHandler);
|
�����Ƃ��A�^�C�����C����ł���Athis���Q�Ƃ����f�t�H���g�Q�����g�����ƂőΉ��ł��܂��B���ۂɖ��ɂȂ�̂́A��q�u2. ���̃X�R�[�v�̈Ϗ��v�̂悤�ɃN���X�Ń��\�b�h(��)�����X�i�[�Ɏw�肵�����ꍇ�ł��傤�B
|
1. �C�x���g�̊��ւ̈Ϗ�
Delegate.create()�̌ďo�����L���Ȃ̂́A�ӂ��̃R���|�[�l���g�������āA����炪�����̃C�x���g��z�M����ꍇ�ł��B���Ƃ��ACheckBox��Button�R���|�[�l���g������Aswitch�X�e�[�g�����g���g����eventObject.target�v���p�e�B����擾�����������ƂɁA�ǂ���̃R���|�[�l���g��click�C�x���g��z�M�����̂����肵�����Ƃ��܂��B
�ȉ��̃R�[�h�������ɂ́AmyCheckBox_chb�Ƃ������O��CheckBox��myButton_btn�Ƃ������O��Button�R���|�[�l���g�C���X�^���X���A���ꂼ��X�e�[�W�ɔz�u���܂��B�ӂ��̃C���X�^���X��I�����A[F8]�L�[��������[�V���{���ɕϊ�]���܂��B�_�C�A���O�{�b�N�X��[��{]�\���ł�����[�ڍ�]���N���b�N���A[ActionScript�ɏ��o��]���`�F�b�N���������ŁA[AS 2.0�N���X]�ɃN���X���uCart�v����͂��܂��B�V�����V���{���̃C���X�^���X�ɂ́A�C�ӂ̃C���X�^���X����[�v���p�e�B�C���X�y�N�^]�Őݒ肵�܂��B���̃V���{����Cart�N���X�Ɋ֘A�Â����A�C���X�^���X��Cart�N���X�̃C���X�^���X�ɂȂ�܂��B
// import mx.utils.Delegate; // [*2]
import mx.controls.Button;
import mx.controls.CheckBox;
class Cart {
var myCheckBox_chb:CheckBox;
var myButton_btn:Button;
function onLoad() {
myCheckBox_chb.addEventListener("click", this);
myButton_btn.addEventListener("click", this);
}
function click(eventObj:Object) {
switch (eventObj.target) {
case myButton_btn :
// ���b�Z�[�W��z�M����C���X�^���X����
// �C�x���g�^�C�v��[�o��]�p�l���ɕ\��
trace(eventObj.target+":"+eventObj.type);
break;
case myCheckBox_chb :
trace(eventObj.target+":"+eventObj.type);
break;
}
}
}
|
[*2]�����ɂ͂���improt�X�e�[�g�����g�̋L�q������܂��B�������ADelecate�N���X�͎g�p���Ă��܂���̂ŁA�s�v�ł��B |
�ȉ��́A�����N���X�t�@�C��(Cart.as)�ɑ��āADelegate���g�p���邩�����ɏC���������̂ł��B
import mx.utils.Delegate;
import mx.controls.Button;
import mx.controls.CheckBox;
class Cart {
var myCheckBox_chb:CheckBox;
var myButton_btn:Button;
function onLoad() {
myCheckBox_chb.addEventListener("click", Delegate.create(this, chb_onClick));
myButton_btn.addEventListener("click", Delegate.create(this, btn_onClick)); // [*3]
}
// ����̃C�x���g����������قȂ����ӂ��̊�
function chb_onClick(eventObj:Object) {
// ���b�Z�[�W��z�M����C���X�^���X����
// �C�x���g�^�C�v��[�o��]�p�l���ɕ\��
trace(eventObj.target+":"+eventObj.type);
// FLA�t�@�C���̂Ȃ���Cart�N���X���֘A�Â���ꂽ�V���{����
// �C���X�^���X�ւ̐�p�X��[�o��]�p�l���ɕ\��
trace(this);
}
function btn_onClick(eventObj:Object) {
trace(eventObj.target+":"+eventObj.type);
trace(this);
}
}
|
[*3]Delegate�N���X���g���č쐬�E�o�^�������X�i�[���A�C�x���g��z�M����C���X�^���X����폜����ɂ́A�\�߃��X�i�[�ւ̎Q�Ƃ��擾���Ă����K�v������܂��B�Ȃ��ADelegate.create()���\�b�h�́A��(Function�^�f�[�^)��Ԃ��܂��B
// ActionScript 2.0�N���X��`�t�@�C��: Cart.as
// Button�R���|�[�l���g�C���X�^���XmyButton_btn��z�u
import mx.utils.Delegate;
import mx.controls.Button;
class Cart {
var myButton_btn:Button;
var myDelegateFunc:Function;
function onLoad() {
myDelegateFunc = Delegate.create(this, btn_onClick);
myButton_btn.addEventListener("click", myDelegateFunc);
}
function btn_onClick(eventObj:Object) {
trace(eventObj.target+":"+eventObj.type);
myButton_btn.removeEventListener("click", myDelegateFunc);
trace(this);
}
}
|
|
2. ���̃X�R�[�v�̈Ϗ�
addEventListener()���\�b�h�ɂ́A�ӂ��̈���������܂��B�C�x���g���ƃ��X�i�[�ւ̎Q�Ƃł��B���X�i�[�́A�I�u�W�F�N�g�����̂����ꂩ�ɂȂ�܂��B�I�u�W�F�N�g��n���ƁA�I�u�W�G�N�g�ɐݒ肳�ꂽ�R�[���o�b�N�����A�I�u�W�F�N�g�̃X�R�[�v�Ŏ��s����܂��B�������A�����n�����ƁA����addEventListener()���\�b�h���ďo�����R���|�[�l���g�C���X�^���X�̃X�R�[�v�Ŏ��s����邱�ƂɂȂ�܂��B�ڂ����́A�u���X�i�[���̃X�R�[�v�ɂ��āv�����Q�Ƃ��������B
���̓C�x���g��z�M����C���X�^���X�̃X�R�[�v�Ŏ��s�����̂ŁA���{�̂�this�L�[���[�h�͂��̃C�x���g�z�M�C���X�^���X���Q�Ƃ��邱�ƂɂȂ�܂��B���������āA�����������ꂽ�N���X�̃v���p�e�B��\�b�h�ɂ̓A�N�Z�X�ł��܂���BDelegate�N���X���g���ƁA���̃X�R�[�v���A���̊����������ꂽ�N���X�ɈϏ����邱�Ƃ��ł��܂��B����ƁA���̊���錾�����N���X�̃v���p�e�B��\�b�h�ɃA�N�Z�X���邱�Ƃ��\�ɂȂ�܂��B
�ȉ��̃T���v���́A�O�߁u�C�x���g�̊��ւ̈Ϗ��v�Ɠ������e�ŁACart.as�N���X�t�@�C�����قȂ�X�^�C���ɂ��܂����B
import mx.controls.Button;
import mx.controls.CheckBox;
class Cart {
var myCheckBox_chb:CheckBox;
var myButton_btn:Button;
// chb_onClick������A�N�Z�X����ϐ����`
var i:Number = 10;
function onLoad() {
myCheckBox_chb.addEventListener("click", chb_onClick);
}
function chb_onClick(eventObj:Object) {
// �ϐ�i�ɃA�N�Z�X����10���o�͂ł���悤�Ɏv���܂�
// ������[�o��]�o�l���ɂ�undefined���\������܂�
// ���̃X�R�[�v��i���`����Cart�C���X�^���X�ł͂Ȃ�����ł�
trace(i);
}
}
|
Cart�N���X�̃v���p�e�B�ƃ��\�b�h�ɃA�N�Z�X�ł���悤�ɂ���ɂ́A���̂悤��Delegate.create()���ďo����addEventListener()�̑�2�����Ɏw�肵�܂��B
import mx.utils.Delegate;
import mx.controls.Button;
import mx.controls.CheckBox;
class Cart {
var myCheckBox_chb:CheckBox;
var myButton_btn:Button;
// chb_onClick������A�N�Z�X����ϐ����`
var i:Number = 10;
function onLoad() {
myCheckBox_chb.addEventListener("click", Delegate.create(this, chb_onClick));
}
function chb_onClick(eventObj:Object) {
// [�o��]�o�l���ɂ�10���\������܂�
// ���̃X�R�[�v��Cart�C���X�^���X�Ɏw�肳��Ă��邩��ł�
trace(i);
}
}
|
�o�T
Flash MX 2004 7.2-E [Help] > [Using Components] > [Handling Component Events] > [Delegating events]���M��B
_____
�쐬��: �쒆���Y
�X�V��: 2004�N9��8�� ��Ғ�[*3]��lj�
�쐬��: 2004�N8��5��