Архив

Архив Март 2008

Новое обличие у блогов Riapriority.com

30 Март 2008 1 комментарий

Константин Ковалев только что сообщил, что произвел смену движка блогов Riapriority.com. Вообще-то я этой заметкой тестирую трэк-бэки, которые Riapriority.com никак не мог отловить в старой версии... :)

FDT 3.0 Enterprise поступил в продажу

26 Март 2008 1 комментарий

Ок, представляю вашему вниманию Enterprise-версию FDT 3.0 - популярной среды разработки ActionScript (Flash, Flex) приложений.

С помощью FDT 3.0 Enterprise Вы можете производить отладку Ваших исходников с помощью мощного отладчика, который поддерживает точки останова (breakpoints) и анализировать код шаг-за-шагом.

Еще одна крутая фишка - продвинутая система рефакторинга. Рефакторинг в FDT реализован намного сильнее чем во Flex. Не верите - попробуйте сами.

Загрузить пробную версию можно по адресу: http://fdt.powerflasher.com/index.php?page=try

Safari 3.1 доступен для скачивания

Буквально на днях, а именно 18 марта, компания Apple представила Safari 3.1 — самый быстрый в мире веб-браузер для компьютеров Mac и Windows PC. Safari загружает страницы в 1,9 раза быстрее, чем Internet Explorer 7, и в 1,7 раза быстрее, чем Firefox 2. Кроме того, Safari выполняет JavaScript в шесть раз быстрее, чем другие веб-браузеры. Safari 3.1, который можно загрузить бесплатно для Mac OS X и Windows, поддерживает последние веб-стандарты, что позволяет в полной мере оценить возможности новейших интерактивных материалов на основе Web 2.0.

Categories: Новости Tags: ,

Ура, товарищи!!! Я попал в MXNA агрегатор!

22 Март 2008 3 comments

Надеюсь это так...

UPD: Точно! Только что проверил, и правда, я в MXNA... :D

Categories: Новости Tags:

Как повысить производительность AS3 приложений?

20 Март 2008 1 комментарий

Андрей Горбатов написал отличную статью, помогающую повысить производительность вашего ActionScript 3 приложения.

Честно говоря, для меня было откровением, что, например, при вычислении абсолютного значения конструкция

i = x < 0 ? -x : x;

работает на 250% быстрее чем

i = Math.abs(x);

Короче говоря, настоятельно рекомендую читать всем!

Categories: Основы Tags:

Карта проезда с яйцами… с “пасхальными яйцами”

20 Март 2008 6 comments

map.jpgВот он, креативный подход к созданию банальной карты проезда к офису. Разработчики сделали карту с яйцами... с "пасхальными яйцами" :)

Для того чтобы посмотреть полную драматургии сцену, сначала нужно нажать в нижнем левом углу кнопку "Как пройти", посмотреть как пару раз человечек пройдет,
потом "Как проехать", посмотреть как пару раз машинки проедут. А как полюбуетесь, жмите прямо на надпись "Центр каминов", куда человечки ходили и машинки ездили и следите за развитием событий. Звук не забудьте включить :D

Ах, да... все это чудо размещено на сайте "Центр Каминов". Удачного просмотра!!!

Книга “Learning ActionScript 3.0: A Beginner’s Guide” с исходником

19 Март 2008 9 comments

Представляю Вашему вниманию книгу "Learning ActionScript 3.0: A Beginner's Guide", вышедшую в начале этого года. Книга хорошая сама по себе. Но любопытно еще и то, что авторы этой книги создали блог, где кроме исходных тестов, используемых в книге можно пройти небольшой тест на знание языка.

Вот исходники по главам книги, доступные для скачивания:

Chapter 3: Properties, Methods, and Events (176.9 KB)
Chapter 4: The Display List (209.9 KB)
Chapter 5: Timeline Control (210.3 KB)
Chapter 6: OOP (132.1 KB)
Chapter 7: Motion (702.9 KB)
Chapter 8: Drawing with Vectors (147.7 KB)
Chapter 9: Drawing with Bitmaps (2.2 MB)
Chapter 10: Text (172.2 KB)
Chapter 11: Sound (921.6 KB)
Chapter 12: Video (10.8 MB)
Chapter 13: Loading Assets (2.3 MB)
Chapter 14: XML and E4X (1 MB)
Chapter 15: Programming Design and Resources (5.7 KB)

Categories: Новости Tags:

Визуализация 3D поверхностей во Flex

17 Март 2008 1 комментарий

Я решил еще немного поработать с предыдущим примером и сделал простенькое Flex приложение. Исходники прилагаются.

Оперирование визуализацией произвольных 3D поверхностей

14 Март 2008 2 comments

В продолжение предыдущей публикации, я попробовал расширить наглядность примера. Для этого я создал новый 3D-объект, который представляет собой набор из 11 параметрических поверхностей (взято из туториала "A Demonstration of Customizable Features of Our 3D Surfaces") :

Класс Surfaces:

package lib3d {
	import lib3d.Object3D;

	/**
	 * @author Michael
	 */
	public class Surfaces extends Object3D {
		private var _exampleNum : int = 1;

		public function set exampleNum(n : Number) : void {
			_exampleNum = n;
			setTilesArray();
		}

		public function get exampleNum() : Number {
			return _exampleNum ;
		}

		private const cubeSize : Number = 100;

		public function Surfaces() {
			super();
		}

		override public function setTilesArray() : void {
			var i : int;
			var j : int;
			var istep : Number;
			var jstep : Number;
			var tmin : Number;
			var tmax : Number;
			var smin : Number;
			var smax : Number;
			var curt : Number;
			var curs : Number;

			tmin = 0;
			smin = 0;

			switch (_exampleNum) {
				case 1:
					tmax = Math.PI;
					smax = 7 / 4 * Math.PI;
					break;
				case 2:
					tmax = 2 * Math.PI;
					smax = 2 * Math.PI;
					break;
				case 3:
					tmax = 1.5 * Math.PI;
					smax = 2 * Math.PI;
					break;

				case 4:
					tmax = Math.PI;
					smax = 1.5 * Math.PI;
					break;

				case 5:
					tmax = Math.PI;
					smax = 2 * Math.PI;
					break;

				case 6:
					tmax = Math.PI;
					smax = 1.5 * Math.PI;
					break;

				case 7:
					tmax = 1;
					smax = 2 * Math.PI;
					break;

				case 8:
					tmax = 1.5 * Math.PI;
					smax = 2 * Math.PI;
					break;

				case 9:
					tmax = 1.5 * Math.PI;
					smax = 2 * Math.PI;
					break;

				case 10:
					tmax = Math.PI;
					smax = 2 * Math.PI;
					break;

				case 11:
					tmax = Math.PI;
					smax = 3 * Math.PI;
					break;
			}
			istep = (smax - smin) / nMesh;
			jstep = (tmax - tmin) / nMesh;
			tilesArray = new Array();
			for(i = 0;i <= nMesh; i++) {
				curs = istep * i + smin;
				tilesArray[i] = new Array();
				for(j = 0;j <= nMesh;j++) {
					curt = jstep * j + tmin;
					switch (_exampleNum) {
						case 1:
							tilesArray[i][j] = [cubeSize * Math.cos(curs) * Math.sin(curt),cubeSize * Math.sin(curs) * Math.sin(curt),cubeSize * Math.cos(curt)];
							break;
						case 2:
							tilesArray[i][j] = [cubeSize / 4.4 * (curt) * Math.cos(curs + Math.PI) * Math.sin(Math.cos(curt)),cubeSize / 4.4 * (curt) * Math.sin(curs + Math.PI) * Math.sin(Math.cos(curt)),cubeSize / 3.7 * (curt) * Math.cos(Math.cos(curt)) - 0.8 * cubeSize];
							break;
						case 3:
							tilesArray[i][j] = [cubeSize / 4.3 * Math.cos(curs) * (2 + Math.cos(curt) * 2),cubeSize / 4.3 * Math.sin(curs) * (2 + Math.cos(curt) * 2),cubeSize / 2.6 * (3 - curt) - 0.3 * cubeSize];
							break;

						case 4:
							tilesArray[i][j] = [cubeSize / 1.6 * Math.sqrt(curt) * Math.sin(2 * curt) * Math.cos(curs - Math.PI),cubeSize / 1.6 * Math.sqrt(curt) * Math.sin(2 * curt) * Math.sin(curs - Math.PI),cubeSize / 1.6 * Math.sqrt(curt) * Math.cos(2 * curt) - 0.15 * cubeSize];
							break;

						case 5:
							tilesArray[i][j] = [cubeSize / 3.5 * Math.cos(curs) * (Math.cos(4 * curt) + 2),cubeSize / 3.5 * Math.sin(curs) * (Math.cos(4 * curt) + 2),cubeSize / 2 * curt - 0.8 * cubeSize];
							break;

						case 6:
							tilesArray[i][j] = [3.2 * cubeSize * Math.sin(curt) * Math.cos(Math.PI / 2 * Math.sin(curt) * Math.cos(curs)) / 2 * Math.sin(curt) * Math.cos(curs),2.2 * cubeSize * Math.sin(curt) * Math.cos(Math.PI / 2 * Math.sin(curt) * Math.cos(curs)) / 2 * Math.sin(curt) * Math.sin(curs),2.2 * cubeSize * Math.sin(curt) * Math.cos(Math.PI / 2 * Math.sin(curt) * Math.cos(curs)) / 2 * Math.cos(curt)];
							break;

						case 7:
							tilesArray[i][j] = [cubeSize / 2.4 * (2 * Math.cos(curs) + (curt - 0.5) * Math.cos(curs / 2)),cubeSize / 2.4 * (2 * Math.sin(curs) + (curt - 0.5) * Math.cos(curs / 2)),cubeSize / 2.4 * 4 * (curt - 0.5) * Math.sin(curs / 2) - 0.1 * cubeSize];
							break;

						case 8:
							tilesArray[i][j] = [cubeSize / 4.3 * (curt) * Math.cos(curs + Math.PI) * Math.sin(curt),cubeSize / 4.3 * (curt) * Math.sin(curs + Math.PI) * Math.sin(curt),cubeSize / 4.3 * (curt) * Math.cos(curt)];
							break;

						case 9:
							tilesArray[i][j] = [cubeSize / 2.8 * (curt) * Math.cos(curs + Math.PI) * Math.sin(Math.cos(curt)),cubeSize / 2.8 * (curt) * Math.sin(curs + Math.PI) * Math.sin(Math.cos(curt)),cubeSize / 2.8 * (curt) * Math.cos(Math.cos(curt)) - cubeSize];
							break;

						case 10:
							tilesArray[i][j] = [cubeSize / 1.15 * Math.cos(curs) * Math.sin(2 * curt),cubeSize / 1.15 * Math.sin(curs) * Math.sin(2 * curt),cubeSize / 1.15 * Math.cos(curt)];
							break;

						case 11:
							tilesArray[i][j] = [cubeSize / 2.7 * Math.pow(4 / 3, curs - 5) * Math.sin(curt) * Math.sin(curt) * Math.cos(curs - 5),cubeSize / 2.7 * Math.pow(4 / 3, curs - 5) * Math.sin(curt) * Math.sin(curt) * Math.sin(curs - 5) + 0.2 * cubeSize,cubeSize / 2.7 * Math.pow(4 / 3, curs - 5) * Math.sin(curt) * Math.cos(curt) - 0.2 * cubeSize];
							break;
					}
				}
			}
		}
	}
}

Небольшие изменения для управления альфа-каналом пришлось сделать в классе View3D. Попробуйте сами его "доработать лобзиком" :) Ну а нетерпеливые могут скачать архив.

Пример простой 3D визуализации

11 Март 2008 1 комментарий

Прочитав туториал "Simple 3D Drawing in Flash CS3", я решил разобраться в исходниках и немного их "классифицировать" (для большей универсальности). И у меня получились следующие классы:

  • Object3D - прототип 3D объекта;
  • Sphere - параметрически описанный объект сферы
  • View3D - класс, рисующий 3D объект
  • Main - основной класс документа

Смотреть результат.

Читать далее...