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

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

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

Регистрация: Mar 2009
Сообщений: 4,219
Записей в блоге: 14
Цитата:
in4core, это не правильное решение. как минимум если маска и контент не пересекаются то ширина должна быть 0. getBounds не предлагать, это все равно будет не правильно.
Ну, послушай. Прежде чем ставить задачу, надо иметь исходные данные ВСЕ.
По моим исходным данным маска и контент всегда находятся в координатах 0-0 - и это правильное решение. Автор не спрашивает нас про решения в случае если контент за маской. Но даже если так, то достаточно добавить 1 условие

Код AS3:
if(content.x + content.width > mask.x + mask.width) return 0;
if(content.width < mask.width) return content.width
return mask.width
И не надо усложнять - пишите проще
__________________
Марк Tween

Старый 01.02.2015, 16:47
nubideus вне форума Посмотреть профиль Отправить личное сообщение для nubideus Найти все сообщения от nubideus
  № 12  
Ответить с цитированием
nubideus

Регистрация: Jan 2013
Сообщений: 322
Цитата:
это правильное решение
in4core, почему твое решение не правильное показано на картинке в 6 посте

Цитата:
И не надо усложнять - пишите проще
что? а давайте вообще не писать ничего, ведь так проще.
тем более тс устраивает отсутствие решения.

Цитата:
Прежде чем ставить задачу, надо иметь исходные данные ВСЕ
а если тз измениться ты будешь делать двойную работу?

Старый 05.02.2015, 18:50
ChuwY вне форума Посмотреть профиль Отправить личное сообщение для ChuwY Посетить домашнюю страницу ChuwY Найти все сообщения от ChuwY
  № 13  
Ответить с цитированием
ChuwY
 
Аватар для ChuwY

Регистрация: Nov 2009
Адрес: Тула / Москва
Сообщений: 734
Отправить сообщение для ChuwY с помощью ICQ Отправить сообщение для ChuwY с помощью Skype™
Код AS3:
package by.ppchu.tests
{
	import flash.display.BitmapData;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.geom.Matrix;
	import flash.geom.Rectangle;
 
	[SWF(width="200", height="200")]
	public class Test4 extends Sprite
	{
 
		public static const CIRCLE_RADIUS:Number = 50;
		public static const SQUARE_SIZE:Number = 200;
 
		private var movie:Sprite = new Sprite();
		private var circle:Sprite = new Sprite();
		private var square:Sprite = new Sprite();
 
		public function Test4()
		{
			addChild(movie);
 
			square.graphics.beginFill(0xFF0000, 1);
			square.graphics.drawRect(0, 0, SQUARE_SIZE, SQUARE_SIZE);
			movie.addChild(square);
 
			circle.graphics.beginFill(0, 1);
			circle.graphics.drawCircle(SQUARE_SIZE / 2, SQUARE_SIZE / 2, CIRCLE_RADIUS);
			movie.addChild(circle);
 
			square.mask = circle;
 
			trace("pixel bounds native : " + movie.transform.pixelBounds);
			trace("pixel bounds :" + getPixelBounds(movie));
		}
 
		public static function getPixelBounds(sprite:Sprite):Rectangle
		{
			var matrix:Matrix = new Matrix();
			var rect:Rectangle = sprite.getBounds(sprite);
			var bmd:BitmapData = new BitmapData(rect.width, rect.height, true, 0x0);
			var result:Rectangle;
 
			rect.x = Math.floor(rect.x);
			rect.y = Math.floor(rect.y);
			rect.width = Math.ceil(rect.width);
			rect.height = Math.ceil(rect.height);
 
			matrix.tx = -rect.x;
			matrix.ty = -rect.y;
 
			bmd.draw(sprite, matrix);
 
			var w:int = rect.width;
			var h:int = rect.height;
 
			result = bmd.getColorBoundsRect(0xFF000000, 0x00000000, false);
 
			return result;
		}
	}
}
Код:
pixel bounds native : (x=0, y=0, w=200, h=200)
pixel bounds :(x=50, y=50, w=100, h=100)
В первый день появления темы набросал, да отправить забыл.
Решил исправиться. Правда, товарищ Wolsh уже указал на этот путь решения.
__________________
9 из 10 голосов в моей голове сказали наркотикам "НЕТ"
Мои ачивки: художник-паразит.


Последний раз редактировалось ChuwY; 05.02.2015 в 19:07.
Создать новую тему Ответ Часовой пояс GMT +4, время: 20:52.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
width , маска , размер
Опции темы
Опции просмотра

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

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


 


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


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