![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
[+1.3 15.11.06]
[+1 12.01.07] |
есть такой извратный кусок кода класса-потомка MovieClip, вызывающий критическую ошибку плеера:
import mx.utils.Delegate;
iLab = createClassObject(Label,"iLab"+depth, depth, {_x:0, _y:0, text:"12", autoSize:"left", visible:true});
iLab.onRelease = function(){
this.visible = false;
var iEdit:TextInput = _parent.createClassObject(TextInput,"iEdit"+depth+1, depth+1, {_x:this._x, _y:this._y, text:"12", _width:this._width+5, visible:true});
var destr:Function = Delegate.create(this, edLab);
function remm(){
destr(iEdit);
}
iEdit.addEventListener("focusOut", remm); //при наступлении этого события
//происходит ошибка вырубающая флешовый плеер,
//насколько я понял объект вызвавший неродное событие таким образом грохнуть нельзя
//мув при onRelease можно удалить
}
function edLab(edit:TextInput){
this.visible = true;//depth был неправильный
this.text = edit.text;
edit._parent.destroyObject(edit._name);
}
дык, товарищи флешеры: 1: в чем я неправ удаляя так объект, 2: может есть другое решение, 3: и в чем причина критической ошибки плеера(понимаю, что в моем коде, а именно -...)? заранее дьякую, и извеняйте за объемность вопроса Последний раз редактировалось dacino; 24.11.2006 в 11:11. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
dacino, как ты думаешь, если я вставлю твой код для проверки, у меня будет что-то работать? Судя по написанному, стоит для начала понять, что делает Delegate, EventDispatcher, что такое методы, конструктор супер-класса и прочее. Пока видно только то, что знания есть только обрывками и всё свалено в кучу.
Вердикт: переписать должным образом. |
|
|||||
|
[+1.3 15.11.06]
[+1 12.01.07] |
__etc - внимая вашему вердикту переписал вопрос, чтоб код работал, требо чтоб в либаре были Label и TextInput, соответственно
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Не работает:
**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 5: The class or interface 'TextInput' could not be loaded.
var iEdit:TextInput = _parent.createClassObject(TextInput,"iEdit"+depth+1, depth+1, {_x:this._x, _y:this._y, text:"12", _width:this._width+5, visible:true});
**Error** Scene=Scene 1, layer=Layer 1, frame=1:Line 15: The class or interface 'TextInput' could not be loaded.
function edLab(edit:TextInput){
Total ActionScript Errors: 2 Reported Errors: 2
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
depth = 0;
iLab = createClassObject(mx.controls.Label, "iLab"+depth, depth, {_x:0, _y:0, text:"12", autoSize:"left", visible:true});
iLab.onRelease = function() {
this.visible = false;
this.iEdit = this._parent.createClassObject(mx.controls.TextInput, "iEdit"+(depth+1), depth+1, {_x:this._x, _y:this._y, text:"12", _width:this._width+5, visible:true});
this.iEdit.text = this.text;
this.iEdit.addEventListener("focusOut", mx.utils.Delegate.create(this,this.onEditComplete));
};
iLab.onEditComplete = function() {
if (this.iEdit.text!=undefined) {
this.text = this.iEdit.text;
this._parent.destroyObject(this.iEdit._name);
this.visible = true;
}
}
|
|
|||||
|
[+1.3 15.11.06]
[+1 12.01.07] |
сто раз сорри, вырванный код не работает, вот архив с исходником, и классом delegate, если у кого нет mx.utils.delegate, в либеру проекта положите TextInput и Label, как сделать грамотное удаление TextInput, при focusOut не представляю, хотя очень интересно...
Последний раз редактировалось dacino; 05.01.2007 в 17:37. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
dacino, посмотри пост #5, там всё прекрасно работает.
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
И ещё, замени свой McFactory на этот:
/**
* @author Denis Kolyako
*/
class ru.etcs.McFactory {
public static function create (this_mc:MovieClip, name:String, depth:Number, init_obj:Object, current_constructor:Function):MovieClip {
var new_mc:MovieClip = this_mc.createEmptyMovieClip(name, depth);
new_mc.__proto__ = current_constructor.prototype;
for (var i:String in init_obj) {
new_mc[i] = init_obj[i];
}
current_constructor.call(new_mc);
return new_mc;
}
}
|
|
|||||
|
[+1.3 15.11.06]
[+1 12.01.07] |
__etc - как хорошо, что у некоторых людей есть практически телепатические способности, мои вам благодарности...
|
![]() |
![]() |
Часовой пояс GMT +4, время: 07:13. |
|
|
« Предыдущая тема | Следующая тема » |
|
|