Bitmap 海浪实现方式
package { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.Shape; import flash.display.Sprite; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.Event; import flash.filters.DisplacementMapFilter; import flash.geom.Point; import flash.utils.getTimer; import tween.EasyTween; public class Test2 extends Sprite { // [Embed(source="_preset.png")] [Embed(source="sea.png")] public var waterBitmapCls:Class; private var refractTmpBitmap:Bitmap; private var refractBmData:BitmapData; private var refractDisplaceFilter:DisplacementMapFilter; private var woBitmapData:BitmapData; private var perlinOffsetPoint:Point = new Point(); private var perlinOffset:Array = []; private var filterArray:Array; private var p:Point = new Point(10, 200); private var _waveLayer:Sprite; private var _shipLayer:Sprite; private var _s:AAA; public static const WATERSIZE:int = 300; public function Test2() { stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; // var bbb:BitmapData = new BitmapData(WATERSIZE, WATERSIZE); // bbb.perlinNoise(150, 150, 1, 50, true, true, 7, true, this.perlinOffset); // // var bb:Bitmap = new Bitmap(bbb); // addChild(bb); // return; this.refractTmpBitmap = new waterBitmapCls(); this.refractBmData = new BitmapData(WATERSIZE, WATERSIZE); this.refractDisplaceFilter = new DisplacementMapFilter(this.refractBmData, new Point(0, 0), 1, 2, 10, 20); this.woBitmapData = this.refractTmpBitmap.bitmapData.clone(); this.perlinOffsetPoint.x = 0; this.perlinOffsetPoint.y = 0; this.perlinOffset = [this.perlinOffsetPoint]; this.filterArray = [this.refractDisplaceFilter]; generateWater = true; this.addEventListener(Event.ENTER_FRAME, enterframeHandler); for(var i:int = 0; i < 4; i++) { for(var j:int = 0; j < 4; j++) { var b:Bitmap = new Bitmap(woBitmapData); b.x = i * WATERSIZE; b.y = j * WATERSIZE; this.addChild(b); } } _waveLayer = new Sprite(); addChild(_waveLayer); _shipLayer = new Sprite(); addChild(_shipLayer); _s = new AAA(); _shipLayer.addChild(_s); var l:Shape = new Shape(); l.graphics.lineStyle(1, 0xFF0000); l.graphics.moveTo(WATERSIZE, 100); l.graphics.lineTo(WATERSIZE, WATERSIZE); stage.addChild(l); } private var _t:int = getTimer(); private var generateWater:Boolean = false; private var waterIndex:int = 0; private var waterTiles:Vector.<BitmapData> = new Vector.<BitmapData>(); private var waterDirection:int = -1; private static var waterTileAmount:int = 32; private function enterframeHandler(e:*):void { // this.removeEventListener(Event.ENTER_FRAME, enterframeHandler); var v:Number = 2;//Math.sin(getTimer()) + 10; this.perlinOffsetPoint.x = this.perlinOffsetPoint.x + v; this.perlinOffsetPoint.y = this.perlinOffsetPoint.y - v; this.refractBmData.perlinNoise(80, 80, 1, 50, true, true, 7, true, this.perlinOffset); this.refractTmpBitmap.filters = this.filterArray; this.woBitmapData.lock(); this.woBitmapData.draw(this.refractTmpBitmap); this.woBitmapData.unlock(); // if(generateWater) // { // var v:Number = 2;//Math.sin(getTimer()) + 10; // this.perlinOffsetPoint.x = this.perlinOffsetPoint.x + v; // this.perlinOffsetPoint.y = this.perlinOffsetPoint.y - v; // // this.refractBmData.perlinNoise(80, 80, 1, 50, true, true, 7, true, this.perlinOffset); // this.refractTmpBitmap.filters = this.filterArray; // // this.woBitmapData.lock(); // this.woBitmapData.draw(this.refractTmpBitmap); // this.woBitmapData.unlock(); // // var bitmapData2:BitmapData = this.woBitmapData.clone(); // // this.waterTiles[this.waterIndex] = bitmapData2; // waterIndex++; // if(waterIndex > waterTileAmount) // { // generateWater = false; // waterDirection = -1; // } // } // else // { // waterIndex += waterDirection; // // if (this.waterIndex >= waterTileAmount) // { // this.waterIndex = waterTileAmount; // this.waterDirection = -1; // } // else if (this.waterIndex <= 0) // { // this.waterIndex = 0; // this.waterDirection = 1; // } // // var bitmapData3:BitmapData = this.waterTiles[waterIndex]; // this.woBitmapData.copyPixels(bitmapData3, bitmapData3.rect, new Point()); // } // this.refractTmpBitmap.bitmapData.applyFilter(this.woBitmapData, this.woBitmapData.rect, new Point(), refractDisplaceFilter); // this.woBitmapData.copyPixels(this.refractTmpBitmap.bitmapData, this.refractTmpBitmap.bitmapData.rect, new Point()); // var dltaT:int = getTimer() - _t; EasyTween.updateAll(33); // p.x += 2; _s.x = this.mouseX; _s.y = this.mouseY; Wave.playWave(_s.x, _s.y, _waveLayer); } } }
相关推荐
Bitmap方法C语言实现,支持插入、删除和查找功能。
C# 实现位图算法(BitMap) 位图算法(BitMap)是一种高效的数据结构,主要用于快速查询和存储大规模数据。下面将详细介绍 C# 中如何实现位图算法(BitMap)。 什么是 BitMap BitMap 的基本思想就是用一个 bit 位...
bitmap是个省空间的数据结构,我的c实现
本文将围绕“Transparent Bitmap实现透明的位图”这一主题,详细介绍透明位图的概念、实现方式以及在不同编程环境中的应用。 首先,透明位图的核心是透明度通道(Alpha Channel)。在标准的RGB颜色模型中,每个像素...
总的来说,Linux内核2.6.18版本中的Bitmap功能是软件RAID实现的一个重要进步,它优化了RAID5的性能并提升了数据安全性。通过深入理解Bitmap的工作机制,开发者和系统管理员能够更好地管理和维护Linux环境下的RAID...
切割图片通常指的是从原始图片中提取出一个矩形区域,这个操作在Android中可以通过Bitmap.createBitmap方法实现。以下是一个简单的示例,展示如何从Bitmap中裁剪出指定大小和位置的子Bitmap: ```java // 原始...
Android 实现把bitmap图片的某一部分的颜色改成其他颜色 在 Android 开发中,bitmap 图片处理是一个非常重要的方面,特别是在图片颜色修改方面,今天我们将介绍如何实现把 bitmap 图片的某一部分的颜色改成其他颜色...
为了实现圆形裁剪,我们可以创建一个圆形的BitmapShader,将其设置到Paint对象中,然后使用`drawCircle()`方法绘制圆心在Bitmap中心的圆。具体步骤如下: - 创建一个Shader,如`BitmapShader(shader, Shader....
使用`Bitmap`类和`PictureBox`控件实现图像的显示和保存通常涉及以下步骤: - 加载图像:首先,通过`Bitmap`类的`Load`方法从文件加载图像,然后将其赋值给`PictureBox`的`Image`属性。 ```csharp Bitmap bitmap = ...
在Activity间传递Bitmap,有两种主要方式:Intent extras和使用Parcelable接口。由于Bitmap对象较大,直接通过Intent的extras传递可能会导致内存溢出,因为Intent的大小有限制。因此,更推荐使用Parcelable接口。 1...
创建Bitmap有多种方式,比如从资源id、文件路径或流中加载。一旦Bitmap对象被创建,我们可以使用其提供的方法来获取像素信息、调整大小、裁剪、旋转、缩放等。例如,`createBitmap()`函数用于创建新的Bitmap,`copy...
Bitmap可以通过多种方式加载,例如从资源文件、内存或文件系统中获取。加载后,我们可以获取其宽度、高度和配置信息,以及进行颜色空间转换、像素访问和修改等操作。 Matrix类则提供了对2D矩阵运算的支持,这些运算...
总结来说,`drawBitmap()`方法提供了灵活的方式来控制Bitmap在Canvas上的显示,包括位置、大小以及是否只绘制Bitmap的部分区域。通过结合`src`和`dst`矩形的设置,开发者可以实现各种复杂的图像绘制效果,如动画、...
这个名为"ChristmasGuestBook.rar"的压缩包文件,似乎包含了使用C#和JavaScript实现Bitmap对象的示例或教程。 Bitmap类在C#中的使用是.NET框架中GDI+(图形设备接口)的一部分,它允许开发者创建、加载和操作位图...
这可以通过设置`inJustDecodeBounds`属性为`true`并调用`BitmapFactory.decodeFile()`来实现,此时不会创建实际的`Bitmap`对象,但会填充`Options`对象中的`outWidth`和`outHeight`属性,用于计算合适的`...
"Android 中 Canvas 转换为 Bitmap" Android 中 Canvas 转换为 Bitmap ...将 Canvas 转换为 Bitmap 是 Android 中的一种常见需求,通过使用 Canvas 和 Bitmap,我们可以将图形绘制到 ImageView 中,并实现图形的显示。
这个“Bitmap位图旋转范例”是一个完整的工程,它提供了Bitmap旋转的实现方法,对于学习和理解Bitmap旋转的原理非常有帮助。 首先,我们需要理解Bitmap旋转的基本原理。Bitmap的旋转通常是基于其像素数据的重新排列...
软件开发网在此之前给大家介绍过图片加载框架Glide的基本用法介绍,大家可以先参考一下,本篇内容更加深入的分析了Glide获取图片Path、Bitmap用法,以及实现的代码分析。 1. 获取Bitmap: 1)在图片下载缓存好之后...
在C#.NET编程环境中,`Bitmap`类是用于处理图像的核心类,它允许开发者创建、加载、修改和显示位图图像。本篇文章将详细介绍`Bitmap`类的...这为开发者提供了一种灵活的方式,以便在应用程序中实现丰富的图像处理功能。