Просмотр полной версии : Как сделать так чтобы граница квадрата не менялась
grafillo!
26.09.2013, 15:51
Создаю квадрат методами инструментами флеш у него граница шириной 6 пикселей, этот квадрат использую как диалоговое окно для показа фотографий следовательно размер квадрата меняется в зависимости от размера фотки. Чем больше фотка тем больше граница то есть она становится шириной в 10 пикселей и это конкретно видно что размер границы меняется при просмотре разных фоток. Как сделать так чтобы граница всегда была одной ширины при растяжении квадрата?
dialog_window.dialogFon.height = foto.height + 200;
правда не знаю чем может помочь мой код х)
dialogFon - это и есть тот квадрат
KumoKairo
26.09.2013, 16:09
Нужно воспользоваться старым приемом создания границ - берете набор заготовок для границ, в простейшем случае должно получится 3 элемента (если не лень переворачивать): горизонтальный элемент, вертикальный элемент и элемент для границ. Более сложные случаи включают в себя большее количество элементов. Например такой набор:
30026
И делать границу из этих кусков. Очень распространенный способ и полностью подходит для вашего случая
"Граница" это рамка?
Вы меняете размер квадрата, пропорционально изменению размера квадрата меняется и рамка. Чтобы рамка размер не меняла можно ее отрисовывать вручную.
Как вариант убрать рамку с квадрата и отрисовать ее отдельно. При изменении размеров квадрата менять рамку как нужно.
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
"Граница" это рамка?
Вы меняете размер квадрата, пропорционально изменению размера квадрата меняется и рамка. Чтобы рамка размер не меняла можно ее отрисовывать вручную.
Как вариант убрать рамку с квадрата и отрисовать ее отдельно. При изменении размеров квадрата менять рамку как нужно.
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/showthread.php?t=141434&page=2#Scene_1
grafillo!
26.09.2013, 21:19
а можно как-нибудь с помощью кода нарисовать рамку вокруг квадрата?
Akopalipsis
26.09.2013, 21:41
а можно как-нибудь с помощью кода нарисовать рамку вокруг квадрата?
Абсолютно точно так же как и квадрат.
grafillo!
26.09.2013, 21:58
пример кода есть?
http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/display/Graphics.html#drawRect()
А вообще поиск еще работает.
Akopalipsis
26.09.2013, 23:19
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);
}
}
}
Что такое "(100, 100, 200, 70)"?
Akopalipsis
26.09.2013, 23:35
x,y,width,height.. А что не так?)
Добавлено через 3 минуты
Если конечно ТС рисует при помощи встроенных инструментов, то ему это не поможет..
Но он спросил про программный метод...
Просили "рамку вокруг [квадрата]". Никогда бордер (lineStyle) не был "вокруг". Да и круглых углов не просили.
То есть мне интересно, что такое 200 и 70 — это размеры чего? Потому что в результате Вашего кода 200 и 70 это вот что:
30027
То есть это не размеры рамки и не размеры прямоугольника, который надо окружить рамкой.
Akopalipsis
26.09.2013, 23:48
Ну я ещё глупый, мне простительно!)
И я даже не возьмусь drawPath-ом рисовать, потому что я не знаю как ТС потом его применит.
Тогда проще всего нарисовать ещё один квадрат - подложку.
Вы думаете, при drawPath() линия будет рисоваться как-то по-другому?
Толщина линии (обводки, бордера) всегда рисуется в обе стороны от центра линии. Таким образом фигура с обводкой всегда ломает мозг несчастного программиста — в коде одно, на экране нечто абсолютно другое. Другие координаты, другие размеры. Все почему-то друг на друга наезжает и вообще первобытный хаос.
Можно конечно научиться все эти нюансы учитывать и пересчитывать, и комментировать код (да, ведь его потом когда-нибудь и читать придется, пойди разберись что за странные хардкодные чиселки добавлены-отняты). Но лучше забить на линии и рисовать заливкой. Линию надо использовать только там, где нужна линия.
grafillo!
27.09.2013, 00:48
не ну я уже себе мозг сломал, не могу нарисовать масшатбируемое красивое диалогове окно и пипец, прям хоть применяй способ который во втором посте подсказали(((
Akopalipsis
27.09.2013, 01:00
я не знаю как Вы делаете, но разве это сложно? У Вас есть квадрат, в который грузится фото?
И Вы этому квадрату задаёте размеры в зависимости от размера фото. Почему Вы не создадите второй квадрат, который будет чуть больше первого и обьеденён с ним. При масштабе первого и второй будет изменяться в таких же пропорциях.
grafillo!
27.09.2013, 01:10
я так и сделал, но у меня округленные углы при растягивании углы приобретают пипец кривую форму((
Akopalipsis
27.09.2013, 01:21
Ну тогда Вам либо самим что то придумать или сделать как я показал, но не выкидывая рисунок выше из памяти.
Надо перерисовывать при "растягивании". Не растягивать уже нарисованное, а рисовать заново, новых размеров. Либо разобраться со scale9grid.
Никто Вам не напишет кусок кода, который Вы скопируете и вставите в свой. Набор в новый сезон Битвы Экстрасенсов уже закончен. Нет кода — не будет исправлений кода.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.