![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Квач
Регистрация: Sep 2006
Адрес: Украина, Киев
Сообщений: 1,526
|
Вот, пытался написать пример для пользователя, создавшего тему http://flasher.ru/forum/showthread.php?t=87732 и наткнулся на нехорошую проблему.
Вот код: import mx.controls.Label;
import mx.controls.TextInput;
var createLabelsButtonClipName:String = "createLabelsButton";
var createLabelsButtonLeft:Number = 10;
var createLabelsButtonTop:Number = 10;
var createLabelsButtonColor:Number = 0xffff00;
var createLabelsButtonSize:Number = 60;
var labelsBaseName:String = "myLabel";
var labelsNumber:Number = 10;
var labelsInterval:Number = 20;
var labelsLeft:Number = 100;
var labelsTop:Number = 100;
var labelsBaseText:String = "Lorem Ipsum ";
var textInputsSuffix:String = "TextInput";
var myButton:MovieClip = createRectangleMovieClip(createLabelsButtonClipName, this, this.getNextHighestDepth(), createLabelsButtonLeft, createLabelsButtonTop, createLabelsButtonSize, createLabelsButtonSize, createLabelsButtonColor, 100);
myButton.onRelease = function()
{
for (var index:Number = 0; index < labelsNumber; index ++)
{
var newLabelName:String = labelsBaseName + index;
var newLabel:Label = this._parent.createClassObject(Label, newLabelName, this._parent.getNextHighestDepth());
newLabel.autoSize = "left";
newLabel.text = labelsBaseText + index;
newLabel.useHandCursor = true;
newLabel.move(labelsLeft, labelsTop + index * labelsInterval);
newLabel.onRelease = function()
{
var newTextInputName:String = this._name + textInputsSuffix;
var newTextInput:TextInput = this._parent.createClassObject(TextInput, newTextInputName, this._parent.getNextHighestDepth());
newTextInput.text = this.text;
newTextInput.move(this._x, this._y);
newTextInput.setSize(this._width, this._height);
destroyObject(this._name);
};
}
}
function createRectangleMovieClip(newName:String, parentClip:MovieClip, parentClipDepth:Number, newX:Number, newY:Number, newWidth:Number, newHeight:Number, newColor:Number, newAlpha:Number):MovieClip
{
var newClip:MovieClip = parentClip.createEmptyMovieClip(newName, parentClipDepth);
newClip.beginFill(newColor);
newClip.moveTo(0, 0);
newClip.lineTo(newWidth, 0);
newClip.lineTo(newWidth, newHeight);
newClip.lineTo(0, newHeight);
newClip.lineTo(0, 0);
newClip.endFill();
newClip._x = newX;
newClip._y = newY;
newClip._alpha = newAlpha;
return newClip;
}
Но почему-то не удаляется метка с помощью строки Насколько я понял, в функцию нужно передавать имя экземпляра компонента. Почему не проходит такой вариант? Исходник не прикрепляю, ибо из-за компонентов он не уместится в один архив, а два мне делать лень. ^_^ PS: Ещё хотел спросить по поводу метода createClassObject. Везде встречал такой синтаксис: Что такое componentInstance? Это мувиклип, в котором будет создан компонент? Или нет?
__________________
Да не нужно тебе читать документацию по Flash и AS от Adobe - ты слишком умён для этого Последний раз редактировалось Хемуль; 11.11.2006 в 03:19. |
|
|||||
|
[+1.3 15.11.06]
[+1 12.01.07] |
тогда простите за еще один вопрос, как можно будет циклом пройтись по всем созданным таким образом объектам?
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
off:
Хемуль, понятные названия переменных это хорошо, но слишком понятные названия — это уже плохо, ухудшает читабельность кода просто в геометрической прогрессии. Оптимальное имя переменой — два-три слова, но не более. По теме: 1) У тебя проблемы с областью видимости, destroyObject должен быть вызван в том объекте, в котором содержится удаляемый компонент, т.е. как createObject, в твоем случае this._parent.destroyObject(this._name); 2) Да, это объект, в котором нужно создать компонент. |
|
|||||
|
Квач
Регистрация: Sep 2006
Адрес: Украина, Киев
Сообщений: 1,526
|
__etc:
Спасибо. А то как-то из livedocs и Справки не до конца понял, что где.
__________________
Да не нужно тебе читать документацию по Flash и AS от Adobe - ты слишком умён для этого |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Просто достаточно представить классовую структуру и то, что все компоненты наследуются от UIObject.
|
|
|||||
|
[+1.3 15.11.06]
[+1 12.01.07] |
млин, схожу с ума от объектной модели флеша пытаясь разобраться в выше написанном, тем не менее благодарствую бесконечно, есть хотяб в чем разбираться
|
|
|||||
|
[+1.3 15.11.06]
[+1 12.01.07] |
*Ошибка** E:\DOCS\HTML_DOCS\flash\el.as: Строка 35: The class 'mx.Controls.Label' could not be loaded.
var newLabel:Label = this._parent.createClassObject(Label, newLabelName, this._parent.getNextHighestDepth()); el.as - лежит в одной папке с исходником, как сделать чтоб The class 'mx.Controls.Label' can be loaded мож этот скрипт куда перенести? |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Какая версия Flash?
|
|
|||||
|
[+1.3 15.11.06]
[+1 12.01.07] |
в общем это и не важна см. далее
Последний раз редактировалось dacino; 13.11.2006 в 13:37. |
|
|||||
|
[+1.3 15.11.06]
[+1 12.01.07] |
частный случай для destroyObject:
stop();
import mx.controls.Label;
var inst = this.getNextHighestDepth();
var my_lab:Label = this.createClassObject(Label, "lbl", inst, {_x:10, _y:40, text:"text", visible:true});
coord = this.lbl.text;
trace(coord);
function remlab(){
this._parent.destroyObject(this._parent.my_lab);
trace(this._parent.my_lab._name);
}
butt.addEventListener("click", remlab);
|
![]() |
![]() |
Часовой пояс GMT +4, время: 15:27. |
|
|
« Предыдущая тема | Следующая тема » |
|
|