![]() |
|
||||||||||
|
|||||
|
Регистрация: Feb 2008
Сообщений: 890
|
Цитата:
Понимаю, что не очень понятно спросил - просто добавьте этот код в первый кадр, выполните его, чуть-чуть посмотрите, а затем уберите комментарии из слушателя и снова выполните и посмотрите...))) var rows:uint = 3; var columns:uint = 4; var channels:uint = BitmapDataChannel.GREEN | BitmapDataChannel.BLUE; var p:Point = new Point( ); var bmd:BitmapData = new BitmapData(100, 100, false, 0x00000000); var bmp:Bitmap; var str:String = "bmp"; for (var i:int = 0; i < rows * columns; i++) { bmp = this[str + i] = new Bitmap(bmd); addChild(bmp); bmp.y = bmd.height * int(i / columns); bmp.x = bmd.width * int(i % columns); } addEventListener(Event.ENTER_FRAME, enterFrameListener); function enterFrameListener (e:Event):void { p.x++; p.y++; //уберите эти комментарии при втором просмотре: //if (p.x >= bmd.width) p.x = 0; //if (p.y >= bmd.height) p.y = 0; //здесь я наивно полагал, что размеры битмапдаты и смещение связаны напрямую...))) bmd.perlinNoise(30, 30, 1, 0, true, true, channels, false, [p]); }
__________________
скриптограф |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Цитата:
Можно еще вот так сделать (фрагмент) Шум будет плавать туда-сюда, но нормально смешиваясь без границ.
__________________
Reality.getBounds(this); |
|
|||||
|
Регистрация: Feb 2008
Сообщений: 890
|
Цитата:
Можно конечно применить приемы зацикливания мувиклипов, созданных в среде разработки, но этот вариант отпадает сразу как только имеем шум с двумя октавами, смещающимися в разных направлениях.
__________________
скриптограф |
|
|||||
|
Регистрация: Apr 2010
Сообщений: 57
|
И вы правы мистер Wolsh
. А я долго не мог понять что там не 1 битмап :/var rows:uint = 3; var columns:uint = 4; var channels:uint = BitmapDataChannel.GREEN | BitmapDataChannel.BLUE; var p:Point = new Point( ); var bmd:BitmapData = new BitmapData(100, 100, false, 0x00000000); var bmp:Bitmap; var str:String = "bmp"; var bitmaps:Array = []; for (var i:int = 0; i < rows * columns; i++) { bmp = this[str + i] = new Bitmap(bmd.clone()); bitmaps.push(bmp); addChild(bmp); bmp.y = bmd.height * int(i / columns); bmp.x = bmd.width * int(i % columns); } addEventListener(Event.ENTER_FRAME, enterFrameListener); function enterFrameListener(e:Event = null):void { p.x++; p.y++; for (var i:int = 0; i < rows * columns; i++) { var _bmp:Bitmap = bitmaps[i]; var bmp:BitmapData = _bmp.bitmapData; var p2:Point = p.clone(); p2.x += _bmp.x; p2.y += _bmp.y; bmp.perlinNoise(30, 30, 1, 0, true, true, channels, false, [p2]); } } ... Хотя красивоКстати странно что если сделать 1 большой битмап и применять кнему шум то это будет гораздо менее производительно если к нескольким маленьким, даже не сомтря на то что там много лишних действей в цикле Последний раз редактировалось Tahion; 14.04.2010 в 21:04. |
|
|||||
|
Регистрация: Feb 2008
Сообщений: 890
|
Tahion, извините, вы специально придуриваетесь или это вышло ненароком?
в смысле зачем вы перлите rows * columns раз, когда весь смысл поста был перлить один раз и результат использовать везде, т.к. он должен был быть безшовным.
__________________
скриптограф Последний раз редактировалось orcpochta; 14.04.2010 в 21:14. |
|
|||||
|
Регистрация: Apr 2010
Сообщений: 57
|
Тут был пост волша который все объяснял но он почемуто пропал. Ваш вариант ошибочный т.к не учитывается смещение x и y у каждого битмапа, каждый битмап отрисовывает копию даты и естественно что например нижний край верхнего битмапа не будет соответсвовать верхнему краю битмапа ниже его, он будте соответствовать верхнему краю битмапа ниже. Пост волша был более красноречив но так как он пропал это не существенно
|
|
|||||
|
Регистрация: Feb 2008
Сообщений: 890
|
Цитата:
Цитата:
в своем первом посте в этой темы я исходил из того, что Цитата:
в сущности так оно и происходит, пока сдвиг не приближается к краям битмэпдаты Wolsh, верните свой пост, который все объяснял!)))
__________________
скриптограф Последний раз редактировалось orcpochta; 14.04.2010 в 22:35. |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Он был упадочный и я его убил))))
Короче вот что. Прямоугольник 30х30 опускается вниз и вправо. Когда он доходит до крайней точки СВОЕЙ точкой 0:0, то в самом прямоугольнике уже ничего нет, это и видится как резкие края. Поэтому я возвращаю его, когда он доходит своей нижней точкой до нижней точки битмапа. Но прикольный адобовский нойз генерится с шагом, равным размеру битмапины, и чтобы шаг рисунка шума совпал, надо доехать до конца))))) Вот такой бред. Я не вижу выхода, потому и удалил, что сказать толком нечего.
__________________
Reality.getBounds(this); |
|
|||||
|
Регистрация: Feb 2008
Сообщений: 890
|
Цитата:
UPD: а еще не совсем понятна мысль из справки: http://help.adobe.com/ru_RU/AS3LCR/F...ay/Bitmap.html Цитата:
а далее в описании свойства pixelSnapping идет: Цитата:
мозг уже вскипел с этими битмапами и справками((( Добавлено через 3 часа 51 минуту Всем дарю!))) var rows:uint = 3; var columns:uint = 4; var channels:uint = 12; var p:Point = new Point( ); var p2:Point = new Point( ); var bmd:BitmapData = new BitmapData(100, 100, true, 0xFFFFFFFF); var bmp:Bitmap; var str:String = "bmp"; for (var i:int = 0; i < rows * columns; i++) { bmp = this[str + i] = new Bitmap(bmd); addChild(bmp); bmp.y = bmd.height * int(i / columns); bmp.x = bmd.width * int(i % columns); } var r:int = (100 - 40) / 2; var p0:Point = new Point(r, r); var angle:Number = 0; addEventListener(Event.ENTER_FRAME, enterFrameListener); function enterFrameListener (e:Event):void { angle += .01; p.x = p0.x + r * Math.cos(angle); p.y = p0.y + r * Math.sin(angle); p2.x = p0.x - r * Math.cos(angle); p2.y = p0.y - r * Math.sin(angle); bmd.perlinNoise(40, 40, 2, 0, true, false, channels, false, [p, p2]); }
__________________
скриптограф Последний раз редактировалось orcpochta; 15.04.2010 в 02:42. |
|
|||||
|
Регистрация: Feb 2008
Сообщений: 890
|
практическое применение, если кому интересно:
http://www.polkanov.com/labyrinth/
__________________
скриптограф |
![]() |
![]() |
Часовой пояс GMT +4, время: 09:41. |
|
|
« Предыдущая тема | Следующая тема » |
|
|