Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 07.03.2011, 16:11
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 1  
Ответить с цитированием
in4core
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
По умолчанию Создание CropTool ( аналог фотошопа ) - проблемы с dashed line , scale

Вообщем то суть темы в шапке.

Вот так я создаю дашт лайн.

Код AS3:
private function getDashedLine():BitmapData
		{
			var sh:Shape = new Shape();
			sh.graphics.lineStyle ( 1 , 0 , 1);
			sh.graphics.lineTo ( 5 , 0 );
			sh.graphics.lineStyle ( 1, 0 , 0 );
			sh.graphics.moveTo ( 5 , 0);
			sh.graphics.lineTo ( 10 , 0);
			sh.graphics.moveTo ( 0 , 0);
			sh.graphics.lineStyle ( 1 , 0 , 1);
			sh.graphics.lineTo ( 0 , 5);
			sh.graphics.moveTo ( 0 , 5);
			sh.graphics.lineStyle ( 1, 0 , 0 );
			sh.graphics.lineTo ( 0 , 10);
 
			var bData:BitmapData = new BitmapData( sh.width , sh.height , true , 0 );
			bData.draw ( sh );
 
			sh = null;
 
			return bData;
		}
Ок создали.

Вешаем

Код AS3:
private function drawDynamicRect(e:MouseEvent):void 
 
		{
 
			_dynamicRect.graphics.clear();
			_dynamicRect.graphics.lineStyle ( 1 , 0 , 1 , true, 'none' );
			_dynamicRect.graphics.lineBitmapStyle ( _dashed );
			_dynamicRect.graphics.beginFill ( 0, 0 );
			_dynamicRect.graphics.drawRect ( 0 , 0, _area.mouseX - _dynamicRect.x, _area.mouseY - _dynamicRect.y );
			_dynamicRect.graphics.endFill();
 
			e.updateAfterEvent();
		}
Все хорошо, квадратик наш рисуется ( событие кстати MOUSE_MOVE) , но иногда в 80% как раз случаев, пропадают края нашей битмап линии... пробовал округлять все координаты - пофиг все равно косячит.

Нажмите на изображение для увеличения
Название: Безымянный.jpg
Просмотров: 159
Размер:	74.0 Кб
ID:	26146

Вот так косячит

А нормального эффекта удается только в 10% случаях достич

Нажмите на изображение для увеличения
Название: Безымянный1.jpg
Просмотров: 160
Размер:	75.8 Кб
ID:	26147

Что можете посоветовать?



Другой вопрос уже конкретно по скейлу самого CropTool.

Вот изначальный вариант

Нажмите на изображение для увеличения
Название: Безымянный3.jpg
Просмотров: 155
Размер:	74.0 Кб
ID:	26148

Далее просто начинаю по маусМув менять ширину объекта.

Нажмите на изображение для увеличения
Название: Безымянный4.jpg
Просмотров: 148
Размер:	68.9 Кб
ID:	26149

И как видно на рисунке, справа пикселя на 1-2 съехало наше чудо. Начинает оно съзежать по какой то странной закономерности. Например до 50 пх не меняется, потом резко на 1 пиксель слетает, потом до 200 не меняется и т.д. Закономерность поймать не могу. Может кто то сталкивался с такими проблемами. Жду вашей помощи. Спасибо

Старый 07.03.2011, 21:06
nOobCrafter вне форума Посмотреть профиль Отправить личное сообщение для nOobCrafter Найти все сообщения от nOobCrafter
  № 2  
Ответить с цитированием
nOobCrafter

Регистрация: Nov 2008
Сообщений: 894
Записей в блоге: 1
http://www.silin.su/#AS3/geom/dash
+ перерисовка или Scale9Grid, а зачем вам растр (для него тоже есть аналог scale9Grid - scaleBitmap_v122)?
гг ну и в догонку:
http://code.google.com/p/stroep/sour...ls/CropUtil.as


Последний раз редактировалось nOobCrafter; 07.03.2011 в 21:26.
Старый 07.03.2011, 21:59
maxkar вне форума Посмотреть профиль Отправить личное сообщение для maxkar Найти все сообщения от maxkar
  № 3  
Ответить с цитированием
maxkar

Регистрация: Nov 2010
Сообщений: 497
Вы не понимаете, как работает заливка (и stroke как ее частный случай). Рекомендую почитать здесь.

В вашем случае правда контур определяется не "заливкой", а линией. Это область, покрываемая установленным stroke. Но все остальное остается тем же.

Теперь рекомендую на клетчатой бумаге нарисовать хотя бы 4 соседних квадрата с нужным stroke (два по горизонтали и два по вертикали), всего будет 20х20 клеток, и на нем "повырезать" различные прямоугольники. Это как раз и покажет, что выводится в "неправильных" случаях, а также объяснит, почему все это работает ровно в 10% существующих случаев Да и ваши скриншоты закономерность очень хорошо показывают.

Кстати, если упражнение выполнять честно, станет видно, что на самом деле пунктир шириной в "полпикселя" а не в целый пиксель .

P.S. По второму вопросу код нужно смотреть, совершенно не понятно, о чем идет речь.

Старый 07.03.2011, 22:38
in4core вне форума Посмотреть профиль Отправить личное сообщение для in4core Найти все сообщения от in4core
  № 4  
Ответить с цитированием
in4core
 
Аватар для in4core

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Цитата:
гг ну и в догонку:
http://code.google.com/p/stroep/sour...ls/CropUtil.as
У меня в отличие от этого полный редактор. не на 5 строк )) а на 300-400 ))) Как сделать вырезку, это понятно, и вообще мне впринципе все понятно)).

Добавлено через 1 минуту
Тему можно закрыть. думаю сам разбирусь.

Создать новую тему Ответ Часовой пояс GMT +4, время: 13:48.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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