/** * @author lolking / http://www.lolking.net/models * @author tengge / https://github.com/tengge1 * @param {ArrayBuffer} buffer 缓冲区 */ function DataView2(buffer) { this.buffer = new DataView(buffer); this.position = 0; } DataView2.prototype.getBool = function () { var v = this.buffer.getUint8(this.position) !== 0; this.position += 1; return v; }; DataView2.prototype.getUint8 = function () { var v = this.buffer.getUint8(this.position); this.position += 1; return v; }; DataView2.prototype.getInt8 = function () { var v = this.buffer.getInt8(this.position); this.position += 1; return v; }; DataView2.prototype.getUint16 = function () { var v = this.buffer.getUint16(this.position, true); this.position += 2; return v; }; DataView2.prototype.getInt16 = function () { var v = this.buffer.getInt16(this.position, true); this.position += 2; return v; }; DataView2.prototype.getUint32 = function () { var v = this.buffer.getUint32(this.position, true); this.position += 4; return v; }; DataView2.prototype.getInt32 = function () { var v = this.buffer.getInt32(this.position, true); this.position += 4; return v; }; DataView2.prototype.getFloat = function () { var v = this.buffer.getFloat32(this.position, true); this.position += 4; return v; }; DataView2.prototype.getString = function (len) { if (len === undefined) len = this.getUint16(); var str = ""; for (var i = 0; i < len; ++i) { str += String.fromCharCode(this.getUint8()); } return str; }; DataView2.prototype.setBool = function (v) { this.buffer.setUint8(this.position, v ? 1 : 0); this.position += 1; }; DataView2.prototype.setUint8 = function (v) { this.buffer.setUint8(this.position, v); this.position += 1; }; DataView2.prototype.setInt8 = function (v) { this.buffer.setInt8(this.position, v); this.position += 1; }; DataView2.prototype.setUint16 = function (v) { this.buffer.setUint16(this.position, v, true); this.position += 2; }; DataView2.prototype.setInt16 = function (v) { this.buffer.setInt16(this.position, v, true); this.position += 2; }; DataView2.prototype.setUint32 = function (v) { this.buffer.setUint32(this.position, v, true); this.position += 4; }; DataView2.prototype.setInt32 = function (v) { this.buffer.setInt32(this.position, v, true); this.position += 4; }; DataView2.prototype.setFloat = function (v) { this.buffer.setFloat32(this.position, v, true); this.position += 4; }; export default DataView2;