|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
простейшая реализация поверхности воды
вот сделал на досуге... хотел 3D сделать поверхность, но понял что при более-менее приличном качестве, даже прорисовка занимает слишком много времени, не говоря уже о просчетах.
this.createEmptyMovieClip("pool",0); pool.count = 100; pool.spacing = 4; pool.seaLevel = -150; pool.delay = 1; pool.accel = .07; pool.fric = .98; pool._x = 0; pool._y = 290; pool.init = function() { this.pause = 0; this.theFrame = 0; this.curr_ymouse = this._ymouse; this.points = new Array(); for (var _loc2 = 0; _loc2<this.count; ++_loc2) { this.points[this.points.length] = {x:_loc2*this.spacing, y:this.seaLevel, speed:0, num:_loc2, process:new Array(), nProcess:new Array()}; } }; pool.makeWave = function(num, mag) { this.points[num].speed = this.points[num].speed+mag; this.points[num-1].process[this.points[num-1].process.length] = [mag, -1]; this.points[num+1].process[this.points[num+1].process.length] = [mag, 1]; }; pool.mouseWaveNum = function() { return (Math.round(Math.min(Math.max(this._xmouse/this.spacing, 0), this.count))); }; pool.onMouseMove = function() { this.last_ymouse = this.curr_ymouse; this.curr_ymouse = this._ymouse; var _loc3 = this.mouseWaveNum(); var _loc2 = this.points[_loc3].y; if (curr_ymouse<_loc2 && _loc2<this.last_ymouse || _loc2<this.curr_ymouse && this.last_ymouse<_loc2) { this.makeWave(_loc3,Math.min(Math.max(-1, (this.curr_ymouse-this.last_ymouse)*1.000000E-001), 1)); } }; pool.onEnterFrame = function() { var _loc4; var _loc2; var _loc3; var _loc5; for (var _loc6 = 0; _loc6<this.count; ++_loc6) { _loc2 = this.points[_loc6]; _loc2.speed = _loc2.speed+(this.seaLevel-_loc2.y)*this.accel; _loc2.speed = _loc2.speed*this.fric; _loc2.y = _loc2.y+_loc2.speed; if (!this.pause) { for (var _loc3 = 0; _loc3<_loc2.process.length; ++_loc3) { _loc2.speed = _loc2.speed+_loc2.process[_loc3][0]; _loc4 = this.points[_loc6+_loc2.process[_loc3][1]]; _loc4.nProcess[_loc4.nProcess.length] = _loc2.process[_loc3].slice(); } } } _loc6 = 0; this.clear(); this.beginFill(10084351,30); while (_loc6<this.count) { _loc2 = this.points[_loc6]; if (!this.pause) { _loc2.process = _loc2.nProcess; _loc2.nProcess = []; } if (!_loc6) { _loc5 = 28896; } else { _loc5 = 127+Math.min(Math.max(20*(this.points[_loc6-1].y-_loc2.y), -127), 128); _loc5 = _loc5/2 << 8 | _loc5; } this.lineStyle(0,_loc5,100); this.lineTo(_loc2.x,_loc2.y); ++_loc6; } this.lineStyle(0,56,100); this.lineTo(_loc2.x,0); this.lineTo(0,0); this.pause = this.theFrame++%this.delay; }; pool.init();
__________________
Кто может делать - делает, кто не может делать - учит, кто не может учить - управляет... |
|
|||||
мега круто!)
|
|
|||||
Регистрация: May 2003
Адрес: Tallinn
Сообщений: 3,181
|
честно говоря сразу даже не могу представить, где это может быть полезным
|
|
|||||
_locN - такое ощущение что код из декомпилятора!
|
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
Откуда этот код?
|
|
|||||
[+1 14.08.08]
[+1 20.08.08] |
да, стопудофф декопил =)
__________________
~ Never trouble trouble till trouble troubles you! |
|
|||||
[+3 16.09.08]
Регистрация: Jan 2008
Адрес: flex.org
Сообщений: 211
|
а как Вы узнали что код из декомпилятора?
|
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
По именам локальных переменных.
|
|
|||||
Регистрация: Aug 2007
Сообщений: 467
|
Чел лохонулся реально! Ппц!
|
Часовой пояс GMT +4, время: 04:19. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|