Калейдоскоп
Запись от ZackMercury размещена 09.05.2017 в 20:49
Обновил(-а) ZackMercury 13.05.2017 в 19:21 (Новая версия флешки.)
Обновил(-а) ZackMercury 13.05.2017 в 19:21 (Новая версия флешки.)
Недавно давал ссылку на интересное видео http://www.flasher.ru/forum/showpost...1&postcount=33
И решил сделать ручками:
Верхний слайдер - скорость трейсинга, ниже - кол-во точек, ещё ниже - шаг, во сколько раз приближаться к точке каждый ход, скролл мыши, драг н дроп.
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); } } } }
Всего комментариев 6
Комментарии
15.05.2017 07:50 | |
Не работает. Показывает только слайдеры
|
15.05.2017 09:44 | |
Работает. Дерни первый слайдер.
|
15.05.2017 12:25 | |
А во, заработало. Глючит если колесо крутить. Видимо улетает куда-то за видимые границы сцены |
15.05.2017 18:12 | |
да, скролл у меня в браузере по какой-то причине вообще не работает.
а ещё не советую 3 слайдер выкручивать больше половины, тут даже хз, в чём проблема) |
19.05.2017 15:06 | |
ChuwY, вы правы и на днях я обновлю флешку.
|
Последние записи от ZackMercury
- Вывод формулы для бесконечного цикла. (11.01.2019)
- Как заменить цикл на формулу. (10.01.2019)
- Конечные и бесконечные суммы, Ч. 1 (08.01.2019)
- Как легко запомнить тригонометрические функции (07.01.2019)
- Движение по треугольнику, квадрату, пентагону, хексагону, ... (05.01.2019)