Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как убрать перекрывание? (http://www.flasher.ru/forum/showthread.php?t=201579)

Chelovek 18.06.2013 11:49

Как убрать перекрывание?
 
Вложений: 1
Здравствуйте. Есть класс:
Код AS3:

package 
{
        import flash.display.*;
        import flash.events.*;
        import flash.text.*;
 
        public class Klass extends Sprite
        {
                public var txt:TextField;
                public var textFormat:TextFormat;
                public var fon:fon1;
                public var e:zat = new zat();
                public var bg1:bf = new bf();
                public var exbml:exit_btn = new exit_btn();
 
 
                public function Klass()
                {
                        textFormat = new TextFormat();
                        textFormat.font = "Calibri";
                        textFormat.color = 0x000000;
                        textFormat.size = 15;
                        fon = new fon1();
                        addChild(fon);
                        txt = new TextField  ;
                        txt.defaultTextFormat = textFormat;
                        txt.type = TextFieldType.DYNAMIC;
                        txt.x = -72;
                        txt.y = -72;
                        txt.height = 144;
                        txt.width = 144;
                        txt.multiline = true;
                        txt.wordWrap = true;
                        txt.text = "абвгдщфдафзтихфэктлаяж";
                        addChild(txt);
                        txt.doubleClickEnabled = true;
                        fon.doubleClickEnabled = true;
                        txt.addEventListener(MouseEvent.DOUBLE_CLICK,clickHandler);
                        fon.addEventListener(MouseEvent.DOUBLE_CLICK,clickHandler);
                }
                public function clickHandler(e:MouseEvent):void
                {
                        bml();
                }
                public function bml()
                {
                        addChild(e);
 
                        addChild(bg1);
                        addChildAt(txt,4);
                        txt.height = 370;
                        txt.width = 670;
                        txt.x = bg1.x - 335;
                        txt.y = bg1.y - 185;
                        exbml.x = 340;
                        exbml.y = -190;
                        exbml.addEventListener(MouseEvent.CLICK, mml);
                        addChild(exbml);
                        txt.removeEventListener(MouseEvent.DOUBLE_CLICK,clickHandler);
                        fon.removeEventListener(MouseEvent.DOUBLE_CLICK,clickHandler);
 
                }
                public function mml(e:MouseEvent):void
                {
                        mml1();
                }
                public function mml1()
                {
                        txt.x = -72;
                        txt.y = -72;
                        txt.height = 144;
                        txt.width = 144;
                        removeChild(e);
                        removeChild(exbml);
                        removeChild(bg1);
                        exbml.removeEventListener(MouseEvent.CLICK, mml);
                        txt.addEventListener(MouseEvent.DOUBLE_CLICK,clickHandler);
                        fon.addEventListener(MouseEvent.DOUBLE_CLICK,clickHandler);
                }
 
        }
 
}

и в первом кадре написано:
Код AS3:

var k1:Klass = new Klass();
k1.x = 150;
k1.y = 300;
addChild(k1);
 
var k2:Klass = new Klass();
k2.x = 150*2;
k2.y = 300;
addChild(k2);
 
var k3:Klass = new Klass();
k3.x = 150*3;
k3.y = 300;
addChild(k3);
 
var k4:Klass = new Klass();
k4.x = 150*4;
k4.y = 300;
addChild(k4);
 
var k5:Klass = new Klass();
k5.x = 150*5;
k5.y = 300;
addChild(k5);

при запуске ролика появляется 5 квадратиков:
http://m.kochergin.users.photofile.r.../214633221.jpg
При двойном щелчке на любом из них появляется фон, большой квадрат, и увеличивается текстовое поле:
http://m.kochergin.users.photofile.r.../214633242.jpg
Но вот в чём проблема этот большой квадрат и текстовое поле появляются не ровно
и их перекрывают квадратики которые заэддчайдлились позже того на котором наджали.
Как это исправить.
И как сделать перетаскивание маленьких квадратиков.
Заранее спасибо.

GBee 18.06.2013 13:22

Код у вас не идеален, мягко говоря. Но для решения вашей проблемы, можно сделать такой костылек:

Код AS3:

public function clickHandler(e:MouseEvent):void
{
    parent.addChild(this);
    bml();
}


Chelovek 18.06.2013 13:29

GBee, спасибо помогло.
А как быть с тем что окно появляется не по середине сцены?

Добавлено через 4 минуты
Может от координат по которым окно должно появиться на сцене отнимать координаты положения на сцене маленького квадрата.
Но как тогда внутри класса узнать координаты маленького квадрата.

GBee 18.06.2013 13:46

Для центровки одного объекта в другом издревле используют следующую формулу:

Код AS3:

obj.x = (objParent.width - obj.width) / 2;
obj.y = (objParent.height - obj.height) / 2;

Ну плюс модификаторы.

Chelovek 18.06.2013 13:52

не понял

GBee 18.06.2013 14:06

Что именно?
obj - объект, нуждающийся в центровке.
objParent - его визуальный родитель, хотя это может быть любой объект, относительно которого надо отцентрироваться, даже меньший по размерам.

Chelovek 18.06.2013 14:41

Вы наверное меня не так поняли. Мне надо что бы окно которое появляется от двойного щелчка появлялось по середине сцены.

GBee 18.06.2013 14:58

АААА, ну тогда вам нужна такая формула:

Код AS3:

obj.x = (objParent.width - obj.width) / 2;
obj.y = (objParent.height - obj.height) / 2;

Ну плюс модификаторы.

Chelovek 18.06.2013 15:19

что такое модификаторы

GBee 18.06.2013 22:47

ну модификаторы типа на полпикселя сдвинуть от центра и т.п.


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

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