Форум 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=203491)

grafillo! 26.09.2013 15:51

Как сделать так чтобы граница квадрата не менялась
 
Создаю квадрат методами инструментами флеш у него граница шириной 6 пикселей, этот квадрат использую как диалоговое окно для показа фотографий следовательно размер квадрата меняется в зависимости от размера фотки. Чем больше фотка тем больше граница то есть она становится шириной в 10 пикселей и это конкретно видно что размер границы меняется при просмотре разных фоток. Как сделать так чтобы граница всегда была одной ширины при растяжении квадрата?
Код AS3:

dialog_window.dialogFon.height = foto.height + 200;

правда не знаю чем может помочь мой код х)
dialogFon - это и есть тот квадрат

KumoKairo 26.09.2013 16:09

Вложений: 1
Нужно воспользоваться старым приемом создания границ - берете набор заготовок для границ, в простейшем случае должно получится 3 элемента (если не лень переворачивать): горизонтальный элемент, вертикальный элемент и элемент для границ. Более сложные случаи включают в себя большее количество элементов. Например такой набор:
Вложение 30026

И делать границу из этих кусков. Очень распространенный способ и полностью подходит для вашего случая

WisP 26.09.2013 16:11

"Граница" это рамка?
Вы меняете размер квадрата, пропорционально изменению размера квадрата меняется и рамка. Чтобы рамка размер не меняла можно ее отрисовывать вручную.
Как вариант убрать рамку с квадрата и отрисовать ее отдельно. При изменении размеров квадрата менять рамку как нужно.
Код AS3:

dialog_window.dialogFon.height = foto.height + 200;
dialog_window.dialogFrame.height = dialog_window.dialogFon.height+6*2;
dialog_window.dialogFrame.y = dialog_window.dialogFon.y - 6;


grafillo! 26.09.2013 16:17

Цитата:

Сообщение от WisP (Сообщение 1146963)
"Граница" это рамка?
Вы меняете размер квадрата, пропорционально изменению размера квадрата меняется и рамка. Чтобы рамка размер не меняла можно ее отрисовывать вручную.
Как вариант убрать рамку с квадрата и отрисовать ее отдельно. При изменении размеров квадрата менять рамку как нужно.
Код AS3:

dialog_window.dialogFon.height = foto.height + 200;
dialog_window.dialogFrame.height = dialog_window.dialogFon.height+6*2;
dialog_window.dialogFrame.y = dialog_window.dialogFon.y - 6;


аааа то есть добавить ещё один элемент надо, во пипец, терь понятно х)
а способ из кусков чёт ваще не понравился х)

Добавлено через 12 минут
а как вручную отрисовать рамку чёт не допёр, рисую рамку отдельно получается точно такая же история(((

lexa2000lexa 26.09.2013 19:24

посмотрите вот эту темы http://www.flasher.ru/forum/showthre...page=2#Scene_1

grafillo! 26.09.2013 21:19

а можно как-нибудь с помощью кода нарисовать рамку вокруг квадрата?

Akopalipsis 26.09.2013 21:41

Цитата:

а можно как-нибудь с помощью кода нарисовать рамку вокруг квадрата?
Абсолютно точно так же как и квадрат.

grafillo! 26.09.2013 21:58

пример кода есть?

WisP 26.09.2013 22:10

http://help.adobe.com/en_US/FlashPla...html#drawRect()
А вообще поиск еще работает.

Akopalipsis 26.09.2013 23:19

Код AS3:

package 
{
        import flash.display.Sprite;
        import flash.events.Event;
 
        public class Frame extends Sprite
        {
                private var _rect:Sprite;
 
                public function Frame()
                {
                        if (stage) init();
                        else addEventListener(Event.ADDED_TO_STAGE, init);
                }
 
                private function init(event:Event=null):void
                {
                        removeEventListener(Event.ADDED_TO_STAGE, init);
                        stage.addEventListener(Event.RESIZE, stage_resizeHandler);
                        stage.addEventListener(Event.ACTIVATE, stage_resizeHandler);
                        _rect = new Sprite();
                }
 
                private function stage_resizeHandler(event:Event):void
                {
                        _rect.graphics.lineStyle(15, 0xC683E2, 1, false, 'none', null, null, 3);
                        _rect.graphics.drawRect(100, 100, 200, 70);
                        _rect.graphics.endFill();
                        addChild(_rect);
                }
 
        }
 
}



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

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