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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 30.11.2011, 15:17
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 11  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Выпуклой, да, и никаких тонких частей быть не должно. Я тестировал на кртинке с гомером симпсоном ) у него на волосах не правильно точки располагаются ) Хоть там всего 3 волоска
Но для курсовой вариант вообще отличный. Можно и картинки специально подготовить

Старый 30.11.2011, 15:23
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 12  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
ага. окружности =) Вот с ними идеально будет работать.
__________________
...вселенская грусть

Старый 30.11.2011, 15:53
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 13  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
а если на картинке вложенные бублики?
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 30.11.2011, 15:55
Astraport вне форума Посмотреть профиль Отправить личное сообщение для Astraport Найти все сообщения от Astraport
  № 14  
Ответить с цитированием
Astraport
 
Аватар для Astraport

блогер
Регистрация: Sep 2009
Сообщений: 2,463
Записей в блоге: 2
А если к PNG glow фильтр применить толщиной 1 пиксель и потом его как-то преобразовать в путь?

Старый 30.11.2011, 15:56
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 15  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Я делал такой обход для размещения моделей на текстуре. Совет - не векторизовать ни в коем случае. Или получите борьбу с неточностями чисел с плавающей запятой, что лечится крайне сложно.
Делать втупую - две битмапы, сдвинуть их до соприкосновения непрозрачными пикселами и потом обходить (каждый шаг обхода - сдвиг до тех пор, пока пикселы ещё касаются).
__________________
Бобры отвечают на вопросы не потому, что знают на них ответы; они отвечают потому, что их спрашивают.

Старый 30.11.2011, 17:43
Alex Lexcuk вне форума Посмотреть профиль Отправить личное сообщение для Alex Lexcuk Посетить домашнюю страницу Alex Lexcuk Найти все сообщения от Alex Lexcuk
  № 16  
Ответить с цитированием
Alex Lexcuk

блогер
Регистрация: Mar 2008
Адрес: Донецк_city
Сообщений: 1,094
Записей в блоге: 5
Можно как-то этот урок лабиринта прикрутить
http://www.demiart.ru/forum/index.php?showtopic=84805
http://www.demiart.ru/forum/index.php?showtopic=46096

Ещё можно сделать четыре точки (или три), которые будут ездить по контуру, вращаясь друг относительно друга, при изменении пиксела битмапы менять точку вращения, таким образом можно перемещаться по границе, всё время цепляясь за неё одной из четырёх точек (лап)
Небольшой пример
Код AS3:
package  
{
	import flash.display.*;
	import flash.events.*;
	import flash.text.*;
	import flash.utils.*;
	import flash.geom.*;
	/**
	 * ...
	 * @author Lexcuk
	 */
	public class Doc extends Sprite
	{
		private var spiderArr:Vector.<Point>, spiderTrans:Vector.<Point>;
		private var spiderMatrix:Matrix = new Matrix();
		private var angle:Number = 0, angleStep:Number = 0.5;
		private var i:int;
		private var sprite:Sprite;
		private var cenRotX:Number = 0, cenRotY:Number = 0, startX:int, startY:int;
		private var spiralDiam:Number = 0, spiralAngle:Number = 0, spiralAnStep:Number = 0.1;
		private var spiTag:Boolean = false;
		private var curHand:int, contactStr:String = '';
 
		private var bmd:BitmapData;
 
		public function Doc() 
		{
			var sh:Shape = new Shape();
			sh.graphics.beginFill(0xFF0000);
			sh.graphics.drawCircle(230, 200, 100);
			sh.graphics.drawCircle(100, 150, 40)
			sh.graphics.drawCircle(250, 100, 40)
 
 
			addChild(new Bitmap(bmd = new BitmapData(550, 400, false)));
 
			//фото в битмапдату
			bmd.draw(sh);
 
			addChild(sprite = new Sprite());
			spiderArr = Vector.<Point>([
			new Point( -5, -5), new Point(5, -5), new Point(5, 5), new Point(-5, 5)
			]);
			spiderTrans = new Vector.<Point>();
 
			cenRotX = spiderArr[0].x;
			cenRotY = spiderArr[0].y;
 
			//точка сброса
			startX = 50;
			startY = 50;
			addEventListener(Event.ENTER_FRAME, enterFrameHandler);
		}
 
		private function showSpider():void {
			sprite.graphics.clear();
			sprite.graphics.lineStyle(0);
			for (i = 0; i < spiderArr.length; i++) 
				sprite.graphics.drawCircle(spiderTrans[i].x, spiderTrans[i].y,2);
		}
 
 
		private function enterFrameHandler(e:Event):void {
			//если не нашли, то ищем
			if (!spiTag) spiderTagertLookFor();
			else spiderGo();
			showSpider();
		}
 
		//режим первоначального поиска цели
		private function spiderTagertLookFor():void {
			//крутиться по возрастающей спирали
			spiderMatrix.identity();
			//смещение на длину спирали
			spiderMatrix.translate(spiralDiam += angleStep, 0);
			//вращение на угол спирали
			spiderMatrix.rotate(spiralAngle += spiralAnStep);
			//смещение на точку сброса
			spiderMatrix.translate(startX, startY);
			//применение матрицы к лапам
 
			for (i = 0; i < spiderArr.length; i++) 
				spiderTrans[i] = spiderMatrix.transformPoint(spiderArr[i]);
			//тестим паука на пересечение лап
			if (pixelTester()) spiTag = true;
		}
 
		//режим перемещения по цели
		public function spiderGo():void {
			//крутится относительно следующей законтаченной лапы
			if (curHand == 3) if (contactStr.charAt(2) == '1') curHand = 2;
			if (curHand == 0) if (contactStr.charAt(3) == '1') curHand = 3;
			if (curHand == 1) if (contactStr.charAt(0) == '1') curHand = 0;
			if (curHand == 2) if (contactStr.charAt(1) == '1') curHand = 1;
 
			cenRotX = spiderTrans[curHand].x;
			cenRotY = spiderTrans[curHand].y;
 
 
			//сместить матрицу паука на текущее положение лапы
			spiderMatrix.translate( -cenRotX, -cenRotY);
			//трансформировать лапы, повернув их относительно текущей лапы
			spiderMatrix.rotate(-angle);
			spiderMatrix.rotate(angle += angleStep);
			//вернуть лапы обратно
			spiderMatrix.translate( cenRotX, cenRotY);
			for (i = 0; i < spiderArr.length; i++) 
				spiderTrans[i] = spiderMatrix.transformPoint(spiderArr[i]);
 
			//проверка лап
			pixelTester();
		}
 
		private function pixelTester():Boolean {
			var r:Boolean;
			var c:uint;
			contactStr = '';
			for (i = 0; i < spiderArr.length; i++) {
				c = bmd.getPixel(spiderTrans[i].x, spiderTrans[i].y);
				if (spiderTrans[i].x <= 0 && spiderTrans[i].y <= 0) c = 0xFFFFFF;
				if (c == 0xFFFFFF||c==0) {
					contactStr += '1';
				}else {
					r = true;
					contactStr += '0';
				}
			}
			return r;
		}
 
	}
 
}
http://murmadillo.tut.su/m/spider-doc.swf
__________________
Гоночка


Последний раз редактировалось Alex Lexcuk; 30.11.2011 в 17:48.
Старый 30.11.2011, 18:02
Astraport вне форума Посмотреть профиль Отправить личное сообщение для Astraport Найти все сообщения от Astraport
  № 17  
Ответить с цитированием
Astraport
 
Аватар для Astraport

блогер
Регистрация: Sep 2009
Сообщений: 2,463
Записей в блоге: 2
Похоже Alex Lexcuk получает 5 по курсовому. Вместо паука добавить мувик и нести преподу

Старый 30.11.2011, 21:35
daimosx вне форума Посмотреть профиль Отправить личное сообщение для daimosx Найти все сообщения от daimosx
  № 18  
Ответить с цитированием
daimosx

Регистрация: Nov 2011
Сообщений: 3
Я пробовал это делать с помощью hitTestPoint, но получаеться каряво (дрыгаеться персонаж). Нужно както это воизбежать.

Старый 30.11.2011, 21:44
goodguy вне форума Посмотреть профиль Найти все сообщения от goodguy
  № 19  
Ответить с цитированием
goodguy
Banned
[+1 05.11.11]
[+1 09.08.11]

Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
Т.е. пофиг все варианты которые предлагали в этой теме? Как бы "ничего не вижу, ничего не слышу"?
Прийдется вам, товарищ, видимо самому разбираться со своей курсовой )

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

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

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


 


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


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