Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Объект теряет свойство при создании последующих объектов (http://www.flasher.ru/forum/showthread.php?t=125396)

KiL33 23.05.2009 08:42

Объект теряет свойство при создании последующих объектов
 
Под свойством подразумевается возврат мувика на прежнее положение при нажатии на кнопку “Убрать на место”. Нажимая на кубик этот объект, выдвигается на определенное расстояние, но если создать еще один кубик, то первый не убирается на место, откуда был вызван.
Код для примера
Код AS1/AS2:

var addCount:Number = 0;
var oneBigMovie:MovieClip = this.createEmptyMovieClip('bigMovie', 998);
oneBigMovie._y = -100;
function add_mc_f() {
        addCount++;
        //квадрат
        var main:MovieClip = oneBigMovie.createEmptyMovieClip("square_mc"+addCount, addCount);
        main.beginFill(0xFF0000);
        main.moveTo(10,10);
        main.lineTo(100,10);
        main.lineTo(100,100);
        main.lineTo(10,100);
        main.endFill();
        main._y = 110*addCount;
        main.onPress = function() {
                main._x = 200;
        };
 
        var btn:MovieClip = this.createEmptyMovieClip("btn", 2);
        btn.beginFill(0xFF0000);
        btn.moveTo(10,10);
        btn.lineTo(160,10);
        btn.lineTo(160,40);
        btn.lineTo(10,40);
        btn.endFill();
        btn._x = btn._y=300;
        var txt2:TextField = btn.createTextField("txt2", 999, 10, 10, 100, 100);
        txt2.text = "Добавить";
        btn.onPress = function() {
                add_mc_f();
        };
 
        var mov:MovieClip = this.createEmptyMovieClip("btn_x", 3);
        mov.beginFill(0xFF0000);
        mov.moveTo(10,10);
        mov.lineTo(160,10);
        mov.lineTo(160,40);
        mov.lineTo(10,40);
        mov.endFill();
        mov._x = 300;
        mov._y = 350;
        mov._alpha = 50;
        var txt:TextField = mov.createTextField("txt2", 999, 10, 10, 100, 100);
        txt.text = "Убрать на место";
        btn_x.onPress = function() {
                main._x = 0;
                trace(main);
        };
}
add_mc_f();


etc 23.05.2009 11:40

Собственно, в коде нет возвращения «первого» на место. Вы используете локальную ссылку всегда на последний созданный кубик, поэтому и управлять вы можете только им.

KiL33 23.05.2009 16:00

Сделал так
Код:

var addCount:Number = 0;
var oneBigMovie:MovieClip = this.createEmptyMovieClip('bigMovie', 998);
oneBigMovie._y = -100;
function add_mc_f() {
        addCount++;
        //квадрат
        var main:MovieClip = oneBigMovie.createEmptyMovieClip("square_mc"+addCount, addCount);
        main.beginFill(0xFF0000);
        main.moveTo(10,10);
        main.lineTo(100,10);
        main.lineTo(100,100);
        main.lineTo(10,100);
        main.endFill();
        main._y = 110*addCount;
        main.onPress = function() {
                main._x = 200;
                ID = this._name.substr(+9);
                trace(ID);
        };

        var btn:MovieClip = this.createEmptyMovieClip("btn", 2);
        btn.beginFill(0xFF0000);
        btn.moveTo(10,10);
        btn.lineTo(160,10);
        btn.lineTo(160,40);
        btn.lineTo(10,40);
        btn.endFill();
        btn._x = btn._y=300;
        var txt2:TextField = btn.createTextField("txt2", 999, 10, 10, 100, 100);
        txt2.text = "Добавить";
        btn.onPress = function() {
                add_mc_f();
        };

        var mov:MovieClip = this.createEmptyMovieClip("btn_x", 3);
        mov.beginFill(0xFF0000);
        mov.moveTo(10,10);
        mov.lineTo(160,10);
        mov.lineTo(160,40);
        mov.lineTo(10,40);
        mov.endFill();
        mov._x = 300;
        mov._y = 350;
        mov._alpha = 50;
        var txt:TextField = mov.createTextField("txt2", 999, 10, 10, 100, 100);
        txt.text = "Убрать на место";
        btn_x.onPress = function() {
                oneBigMovie["square_mc"+ID]._x = 0;
        };
}
add_mc_f();

Не знаю, на сколько это правильно или неправильно в моем случае, главное работает:)

Добавлено через 1 час 32 минуты
Добавил координату _у и возникли ещё косяки.

Создав второй кубик, нажав на первый, потом на кнопку "Убрать на место" первый кубик занимает место второго, а должен вернуться на прежнее место.
Я что-то опять упустил?

Код:

var addCount:Number = 0;
var oneBigMovie:MovieClip = this.createEmptyMovieClip('bigMovie', 998);
oneBigMovie._y = -100;
function add_mc_f() {
        addCount++;
        //квадрат
        var main:MovieClip = oneBigMovie.createEmptyMovieClip("square_mc"+addCount, addCount);
        main.beginFill(0xFF0000);
        main.moveTo(10,10);
        main.lineTo(100,10);
        main.lineTo(100,100);
        main.lineTo(10,100);
        main.endFill();
        main._y = 110*addCount;
        main.onPress = function() {
                this._x = 200;
                this._y = 200                ID = this._name.substr(+9);
                trace(ID);
        };

        var btn:MovieClip = this.createEmptyMovieClip("btn", 2);
        btn.beginFill(0xFF0000);
        btn.moveTo(10,10);
        btn.lineTo(160,10);
        btn.lineTo(160,40);
        btn.lineTo(10,40);
        btn.endFill();
        btn._x = btn._y=300;
        var txt2:TextField = btn.createTextField("txt2", 999, 10, 10, 100, 100);
        txt2.text = "Добавить";
        btn.onPress = function() {
                add_mc_f();
        };

        var mov:MovieClip = this.createEmptyMovieClip("btn_x", 3);
        mov.beginFill(0xFF0000);
        mov.moveTo(10,10);
        mov.lineTo(160,10);
        mov.lineTo(160,40);
        mov.lineTo(10,40);
        mov.endFill();
        mov._x = 300;
        mov._y = 350;
        mov._alpha = 50;
        var txt:TextField = mov.createTextField("txt2", 999, 10, 10, 100, 100);
        txt.text = "Убрать на место";
        mov.onPress = function() {
                oneBigMovie["square_mc"+ID]._x = 0;
                oneBigMovie["square_mc"+ID]._y = 110*addCount;
                //trace(ID);
        };
}
add_mc_f();



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

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