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

Вернуться   Форум Flasher.ru > Блоги > ZackMercury

Оценить эту запись

Калейдоскоп

Запись от ZackMercury размещена 09.05.2017 в 20:49
Обновил(-а) ZackMercury 13.05.2017 в 19:21 (Новая версия флешки.)

Недавно давал ссылку на интересное видео http://www.flasher.ru/forum/showpost...1&postcount=33
И решил сделать ручками:

Test.swf   (19.4 Кб)

Верхний слайдер - скорость трейсинга, ниже - кол-во точек, ещё ниже - шаг, во сколько раз приближаться к точке каждый ход, скролл мыши, драг н дроп.
Код AS3:
package com.zackmercury.test
{
	import com.bit101.components.PushButton;
	import com.bit101.components.Slider;
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.geom.Point;
	import flash.geom.Rectangle;
	/**
	 * ...
	 * @author ZackMercury
	 */
	public class Main extends Sprite 
	{
		private var bmp:Bitmap;
		private var curr:Point = new Point();
		private var points:Vector.<Point> = new Vector.<Point>();
		private var speed:int = 0;
 
		public function Main() 
		{
			if (stage) init();
			else addEventListener(Event.ADDED_TO_STAGE, init);
		}
 
		private function init(e:Event = null):void 
		{
			removeEventListener(Event.ADDED_TO_STAGE, init);
			// entry point
			bmp = new Bitmap(new BitmapData(stage.stageWidth, stage.stageHeight, false, 0xFFFFFF), "auto", true);
			addChild(bmp);
			addEventListener(Event.ENTER_FRAME, update);
			var speedSlider:Slider = new Slider(Slider.HORIZONTAL, this, 0, 0, function(e:Event){speed = speedSlider.value; });
			speedSlider.maximum = 6000;
			var pointsSlider:Slider = new Slider(Slider.HORIZONTAL, this, 0, 20, function(e:Event)
			{
				bmp.bitmapData.fillRect(new Rectangle(0, 0, bmp.width, bmp.height), 0xFFFFFF)
				points = new Vector.<Point>();
				for (var i:Number = 0; i < Math.PI * 2; i += Math.PI * 2 / pointsSlider.value)
					points.push(new Point(50 + (1 + Math.cos(i)) / 2 * 300, 50 + (1 + Math.sin(i)) / 2 * 300));
			});
			pointsSlider.minimum = 2;
			pointsSlider.value = 3;
			pointsSlider.maximum = 10;
			for (var i:Number = 0; i < Math.PI * 2; i += Math.PI * 2 / pointsSlider.value)
					points.push(new Point(50 + (1 + Math.cos(i)) / 2 * 300, 50 + (1 + Math.sin(i)) / 2 * 300));
 
			var clearBtn:PushButton = new PushButton(this, 100, 0, "Clear", function(e:Event){bmp.bitmapData.fillRect(new Rectangle(0, 0, bmp.width, bmp.height), 0xFFFFFF)});
		}
 
		private function update(e:Event):void 
		{
			var d:BitmapData = bmp.bitmapData;
			for (var i:int = 0; i < speed; i ++)
			{
				var point:int = Math.random() * points.length;
				curr.x = (curr.x + points[point].x) / 2;
				curr.y = (curr.y + points[point].y) / 2;
				d.setPixel(curr.x, curr.y, 0x000000);
			}
		}
 
	}
 
}
Было немного лень выносить в отдельные методы На*****кодил чутка.
Вложения
Тип файла: swf Test.swf (19.4 Кб, 448 просмотров)
Всего комментариев 6

Комментарии

Старый 15.05.2017 07:50 caseyryan вне форума
caseyryan
 
Аватар для caseyryan
Не работает. Показывает только слайдеры
Старый 15.05.2017 09:44 Zebestov вне форума
Zebestov
 
Аватар для Zebestov
Работает. Дерни первый слайдер.
Старый 15.05.2017 12:25 caseyryan вне форума
caseyryan
 
Аватар для caseyryan
Уже всяко разно их крутил. Что-то мелкнуло, и пропало бесследно) Забаговано короче
А во, заработало. Глючит если колесо крутить. Видимо улетает куда-то за видимые границы сцены
Старый 15.05.2017 18:12 ZackMercury вне форума
ZackMercury
 
Аватар для ZackMercury
да, скролл у меня в браузере по какой-то причине вообще не работает.
а ещё не советую 3 слайдер выкручивать больше половины, тут даже хз, в чём проблема)
Старый 18.05.2017 16:30 ChuwY вне форума
ChuwY
 
Аватар для ChuwY
Сам эффект выглядит довольно клёво, но раз уж решил выложить в блог... Может чуть заморочиться, чтобы сделать демку поюзабельнее и поприятнее? А то я уже тоже успел решить, что всё глючит, ничё не работает и пора уходить.
Старый 19.05.2017 15:06 ZackMercury вне форума
ZackMercury
 
Аватар для ZackMercury
ChuwY, вы правы и на днях я обновлю флешку.
 

 


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


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