滚动精灵
This commit is contained in:
49
source/bin/framework.d.ts
vendored
49
source/bin/framework.d.ts
vendored
@@ -311,19 +311,6 @@ declare class Mesh extends RenderableComponent {
|
||||
render(camera: Camera): void;
|
||||
reset(): void;
|
||||
}
|
||||
declare class Sprite {
|
||||
texture2D: egret.Texture;
|
||||
readonly sourceRect: Rectangle;
|
||||
readonly center: Vector2;
|
||||
origin: Vector2;
|
||||
readonly uvs: Rectangle;
|
||||
constructor(texture: egret.Texture, sourceRect?: Rectangle, origin?: Vector2);
|
||||
}
|
||||
declare class SpriteAnimation {
|
||||
readonly sprites: Sprite[];
|
||||
readonly frameRate: number;
|
||||
constructor(sprites: Sprite[], frameRate: number);
|
||||
}
|
||||
declare class SpriteRenderer extends RenderableComponent {
|
||||
private _origin;
|
||||
private _sprite;
|
||||
@@ -338,6 +325,35 @@ declare class SpriteRenderer extends RenderableComponent {
|
||||
onRemovedFromEntity(): void;
|
||||
reset(): void;
|
||||
}
|
||||
declare class TiledSpriteRenderer extends SpriteRenderer {
|
||||
protected sourceRect: Rectangle;
|
||||
protected leftTexture: egret.Bitmap;
|
||||
protected rightTexture: egret.Bitmap;
|
||||
scrollX: number;
|
||||
scrollY: number;
|
||||
constructor(sprite: Sprite);
|
||||
render(camera: Camera): void;
|
||||
}
|
||||
declare class ScrollingSpriteRenderer extends TiledSpriteRenderer {
|
||||
scrollSpeedX: number;
|
||||
scroolSpeedY: number;
|
||||
private _scrollX;
|
||||
private _scrollY;
|
||||
update(): void;
|
||||
}
|
||||
declare class Sprite {
|
||||
texture2D: egret.Texture;
|
||||
readonly sourceRect: Rectangle;
|
||||
readonly center: Vector2;
|
||||
origin: Vector2;
|
||||
readonly uvs: Rectangle;
|
||||
constructor(texture: egret.Texture, sourceRect?: Rectangle, origin?: Vector2);
|
||||
}
|
||||
declare class SpriteAnimation {
|
||||
readonly sprites: Sprite[];
|
||||
readonly frameRate: number;
|
||||
constructor(sprites: Sprite[], frameRate: number);
|
||||
}
|
||||
declare class SpriteAnimator extends SpriteRenderer {
|
||||
onAnimationCompletedEvent: Function;
|
||||
speed: number;
|
||||
@@ -371,13 +387,6 @@ declare enum State {
|
||||
paused = 2,
|
||||
completed = 3
|
||||
}
|
||||
declare class TiledSpriteRenderer extends SpriteRenderer {
|
||||
protected sourceRect: Rectangle;
|
||||
scrollX: number;
|
||||
scrollY: number;
|
||||
constructor(sprite: Sprite);
|
||||
render(camera: Camera): void;
|
||||
}
|
||||
interface ITriggerListener {
|
||||
onTriggerEnter(other: Collider, local: Collider): any;
|
||||
onTriggerExit(other: Collider, local: Collider): any;
|
||||
|
||||
@@ -1548,31 +1548,6 @@ var Mesh = (function (_super) {
|
||||
};
|
||||
return Mesh;
|
||||
}(RenderableComponent));
|
||||
var Sprite = (function () {
|
||||
function Sprite(texture, sourceRect, origin) {
|
||||
if (sourceRect === void 0) { sourceRect = new Rectangle(0, 0, texture.textureWidth, texture.textureHeight); }
|
||||
if (origin === void 0) { origin = sourceRect.getHalfSize(); }
|
||||
this.uvs = new Rectangle();
|
||||
this.texture2D = texture;
|
||||
this.sourceRect = sourceRect;
|
||||
this.center = new Vector2(sourceRect.width * 0.5, sourceRect.height * 0.5);
|
||||
this.origin = origin;
|
||||
var inverseTexW = 1 / texture.textureWidth;
|
||||
var inverseTexH = 1 / texture.textureHeight;
|
||||
this.uvs.x = sourceRect.x * inverseTexW;
|
||||
this.uvs.y = sourceRect.y * inverseTexH;
|
||||
this.uvs.width = sourceRect.width * inverseTexW;
|
||||
this.uvs.height = sourceRect.height * inverseTexH;
|
||||
}
|
||||
return Sprite;
|
||||
}());
|
||||
var SpriteAnimation = (function () {
|
||||
function SpriteAnimation(sprites, frameRate) {
|
||||
this.sprites = sprites;
|
||||
this.frameRate = frameRate;
|
||||
}
|
||||
return SpriteAnimation;
|
||||
}());
|
||||
var SpriteRenderer = (function (_super) {
|
||||
__extends(SpriteRenderer, _super);
|
||||
function SpriteRenderer() {
|
||||
@@ -1644,6 +1619,108 @@ var SpriteRenderer = (function (_super) {
|
||||
};
|
||||
return SpriteRenderer;
|
||||
}(RenderableComponent));
|
||||
var TiledSpriteRenderer = (function (_super) {
|
||||
__extends(TiledSpriteRenderer, _super);
|
||||
function TiledSpriteRenderer(sprite) {
|
||||
var _this = _super.call(this) || this;
|
||||
_this.leftTexture = new egret.Bitmap();
|
||||
_this.rightTexture = new egret.Bitmap();
|
||||
_this.leftTexture.texture = sprite.texture2D;
|
||||
_this.rightTexture.texture = sprite.texture2D;
|
||||
_this.setSprite(sprite);
|
||||
_this.sourceRect = sprite.sourceRect;
|
||||
return _this;
|
||||
}
|
||||
Object.defineProperty(TiledSpriteRenderer.prototype, "scrollX", {
|
||||
get: function () {
|
||||
return this.sourceRect.x;
|
||||
},
|
||||
set: function (value) {
|
||||
this.sourceRect.x = value;
|
||||
if (this.sourceRect.x < -this.sourceRect.width)
|
||||
this.sourceRect.x = this.sourceRect.width;
|
||||
else if (this.sourceRect.x > this.sourceRect.width)
|
||||
this.sourceRect.x = -this.sourceRect.width;
|
||||
},
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
});
|
||||
Object.defineProperty(TiledSpriteRenderer.prototype, "scrollY", {
|
||||
get: function () {
|
||||
return this.sourceRect.y;
|
||||
},
|
||||
set: function (value) {
|
||||
this.sourceRect.y = value;
|
||||
if (this.sourceRect.y < -this.sourceRect.height)
|
||||
this.sourceRect.y = this.sourceRect.height;
|
||||
else if (this.sourceRect.y > this.sourceRect.height)
|
||||
this.sourceRect.y = -this.sourceRect.height;
|
||||
},
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
});
|
||||
TiledSpriteRenderer.prototype.render = function (camera) {
|
||||
if (!this.sprite)
|
||||
return;
|
||||
_super.prototype.render.call(this, camera);
|
||||
var renderTexture = new egret.RenderTexture();
|
||||
var cacheBitmap = new egret.DisplayObjectContainer();
|
||||
cacheBitmap.removeChildren();
|
||||
cacheBitmap.addChild(this.leftTexture);
|
||||
cacheBitmap.addChild(this.rightTexture);
|
||||
this.leftTexture.x = this.sourceRect.x;
|
||||
this.rightTexture.x = this.sourceRect.x - this.sourceRect.width;
|
||||
this.leftTexture.y = this.sourceRect.y;
|
||||
this.rightTexture.y = this.sourceRect.y;
|
||||
cacheBitmap.cacheAsBitmap = true;
|
||||
renderTexture.drawToTexture(cacheBitmap, new egret.Rectangle(0, 0, this.sourceRect.width, this.sourceRect.height));
|
||||
this.bitmap.texture = renderTexture;
|
||||
};
|
||||
return TiledSpriteRenderer;
|
||||
}(SpriteRenderer));
|
||||
var ScrollingSpriteRenderer = (function (_super) {
|
||||
__extends(ScrollingSpriteRenderer, _super);
|
||||
function ScrollingSpriteRenderer() {
|
||||
var _this = _super !== null && _super.apply(this, arguments) || this;
|
||||
_this.scrollSpeedX = 15;
|
||||
_this.scroolSpeedY = 0;
|
||||
_this._scrollX = 0;
|
||||
_this._scrollY = 0;
|
||||
return _this;
|
||||
}
|
||||
ScrollingSpriteRenderer.prototype.update = function () {
|
||||
this.scrollX += this.scrollSpeedX * Time.deltaTime;
|
||||
this.scrollY += this.scroolSpeedY * Time.deltaTime;
|
||||
this.sourceRect.x = this._scrollX;
|
||||
this.sourceRect.y = this._scrollY;
|
||||
};
|
||||
return ScrollingSpriteRenderer;
|
||||
}(TiledSpriteRenderer));
|
||||
var Sprite = (function () {
|
||||
function Sprite(texture, sourceRect, origin) {
|
||||
if (sourceRect === void 0) { sourceRect = new Rectangle(0, 0, texture.textureWidth, texture.textureHeight); }
|
||||
if (origin === void 0) { origin = sourceRect.getHalfSize(); }
|
||||
this.uvs = new Rectangle();
|
||||
this.texture2D = texture;
|
||||
this.sourceRect = sourceRect;
|
||||
this.center = new Vector2(sourceRect.width * 0.5, sourceRect.height * 0.5);
|
||||
this.origin = origin;
|
||||
var inverseTexW = 1 / texture.textureWidth;
|
||||
var inverseTexH = 1 / texture.textureHeight;
|
||||
this.uvs.x = sourceRect.x * inverseTexW;
|
||||
this.uvs.y = sourceRect.y * inverseTexH;
|
||||
this.uvs.width = sourceRect.width * inverseTexW;
|
||||
this.uvs.height = sourceRect.height * inverseTexH;
|
||||
}
|
||||
return Sprite;
|
||||
}());
|
||||
var SpriteAnimation = (function () {
|
||||
function SpriteAnimation(sprites, frameRate) {
|
||||
this.sprites = sprites;
|
||||
this.frameRate = frameRate;
|
||||
}
|
||||
return SpriteAnimation;
|
||||
}());
|
||||
var SpriteAnimator = (function (_super) {
|
||||
__extends(SpriteAnimator, _super);
|
||||
function SpriteAnimator(sprite) {
|
||||
@@ -1738,46 +1815,6 @@ var State;
|
||||
State[State["paused"] = 2] = "paused";
|
||||
State[State["completed"] = 3] = "completed";
|
||||
})(State || (State = {}));
|
||||
var TiledSpriteRenderer = (function (_super) {
|
||||
__extends(TiledSpriteRenderer, _super);
|
||||
function TiledSpriteRenderer(sprite) {
|
||||
var _this = _super.call(this) || this;
|
||||
_this.setSprite(sprite);
|
||||
_this.sourceRect = sprite.sourceRect;
|
||||
return _this;
|
||||
}
|
||||
Object.defineProperty(TiledSpriteRenderer.prototype, "scrollX", {
|
||||
get: function () {
|
||||
return this.sourceRect.x;
|
||||
},
|
||||
set: function (value) {
|
||||
this.sourceRect.x = value;
|
||||
},
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
});
|
||||
Object.defineProperty(TiledSpriteRenderer.prototype, "scrollY", {
|
||||
get: function () {
|
||||
return this.sourceRect.y;
|
||||
},
|
||||
set: function (value) {
|
||||
this.sourceRect.y = value;
|
||||
},
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
});
|
||||
TiledSpriteRenderer.prototype.render = function (camera) {
|
||||
if (!this.sprite)
|
||||
return;
|
||||
_super.prototype.render.call(this, camera);
|
||||
var renderTexture = new egret.RenderTexture();
|
||||
var targetTexture = new egret.Bitmap(this.sprite.texture2D);
|
||||
var clipBounds = new egret.Rectangle(this.sourceRect.x, this.sourceRect.y, this.sourceRect.width, this.sourceRect.height);
|
||||
renderTexture.drawToTexture(targetTexture, clipBounds);
|
||||
this.bitmap.texture = renderTexture;
|
||||
};
|
||||
return TiledSpriteRenderer;
|
||||
}(SpriteRenderer));
|
||||
var Mover = (function (_super) {
|
||||
__extends(Mover, _super);
|
||||
function Mover() {
|
||||
|
||||
2
source/bin/framework.min.js
vendored
2
source/bin/framework.min.js
vendored
File diff suppressed because one or more lines are too long
37
source/src/ECS/Components/ScrollingSpriteRenderer.ts
Normal file
37
source/src/ECS/Components/ScrollingSpriteRenderer.ts
Normal file
@@ -0,0 +1,37 @@
|
||||
///<reference path="./TiledSpriteRenderer.ts"/>
|
||||
class ScrollingSpriteRenderer extends TiledSpriteRenderer {
|
||||
public scrollSpeedX = 15;
|
||||
public scroolSpeedY = 0;
|
||||
private _scrollX = 0;
|
||||
private _scrollY = 0;
|
||||
|
||||
public update(){
|
||||
this._scrollX += this.scrollSpeedX * Time.deltaTime;
|
||||
this._scrollY += this.scroolSpeedY * Time.deltaTime;
|
||||
this.sourceRect.x = this._scrollX;
|
||||
this.sourceRect.y = this._scrollY;
|
||||
}
|
||||
|
||||
public render(camera: Camera) {
|
||||
if (!this.sprite)
|
||||
return;
|
||||
|
||||
super.render(camera);
|
||||
|
||||
let renderTexture = new egret.RenderTexture();
|
||||
let cacheBitmap = new egret.DisplayObjectContainer();
|
||||
cacheBitmap.removeChildren();
|
||||
cacheBitmap.addChild(this.leftTexture);
|
||||
cacheBitmap.addChild(this.rightTexture);
|
||||
|
||||
this.leftTexture.x = this.sourceRect.x;
|
||||
this.rightTexture.x = this.sourceRect.x - this.sourceRect.width;
|
||||
this.leftTexture.y = this.sourceRect.y;
|
||||
this.rightTexture.y = this.sourceRect.y;
|
||||
|
||||
cacheBitmap.cacheAsBitmap = true;
|
||||
renderTexture.drawToTexture(cacheBitmap, new egret.Rectangle(0, 0, this.sourceRect.width, this.sourceRect.height));
|
||||
|
||||
this.bitmap.texture = renderTexture;
|
||||
}
|
||||
}
|
||||
@@ -1,36 +1,57 @@
|
||||
///<reference path="./SpriteRenderer.ts" />
|
||||
/**
|
||||
* 滚动由两张图片组合而成
|
||||
*/
|
||||
class TiledSpriteRenderer extends SpriteRenderer {
|
||||
protected sourceRect: Rectangle;
|
||||
protected leftTexture: egret.Bitmap;
|
||||
protected rightTexture: egret.Bitmap;
|
||||
|
||||
public get scrollX(){
|
||||
public get scrollX() {
|
||||
return this.sourceRect.x;
|
||||
}
|
||||
public set scrollX(value: number){
|
||||
public set scrollX(value: number) {
|
||||
this.sourceRect.x = value;
|
||||
}
|
||||
public get scrollY(){
|
||||
public get scrollY() {
|
||||
return this.sourceRect.y;
|
||||
}
|
||||
public set scrollY(value: number){
|
||||
public set scrollY(value: number) {
|
||||
this.sourceRect.y = value;
|
||||
}
|
||||
|
||||
constructor(sprite: Sprite){
|
||||
constructor(sprite: Sprite) {
|
||||
super();
|
||||
|
||||
this.leftTexture = new egret.Bitmap();
|
||||
this.rightTexture = new egret.Bitmap();
|
||||
this.leftTexture.texture = sprite.texture2D;
|
||||
this.rightTexture.texture = sprite.texture2D;
|
||||
|
||||
this.setSprite(sprite);
|
||||
this.sourceRect = sprite.sourceRect;
|
||||
}
|
||||
|
||||
public render(camera: Camera){
|
||||
public render(camera: Camera) {
|
||||
if (!this.sprite)
|
||||
return;
|
||||
|
||||
super.render(camera);
|
||||
|
||||
let renderTexture = new egret.RenderTexture();
|
||||
let targetTexture = new egret.Bitmap(this.sprite.texture2D);
|
||||
let clipBounds = new egret.Rectangle(this.sourceRect.x, this.sourceRect.y, this.sourceRect.width, this.sourceRect.height);
|
||||
renderTexture.drawToTexture(targetTexture, clipBounds);
|
||||
let cacheBitmap = new egret.DisplayObjectContainer();
|
||||
cacheBitmap.removeChildren();
|
||||
cacheBitmap.addChild(this.leftTexture);
|
||||
cacheBitmap.addChild(this.rightTexture);
|
||||
|
||||
this.leftTexture.x = this.sourceRect.x;
|
||||
this.rightTexture.x = this.sourceRect.x - this.sourceRect.width;
|
||||
this.leftTexture.y = this.sourceRect.y;
|
||||
this.rightTexture.y = this.sourceRect.y;
|
||||
|
||||
cacheBitmap.cacheAsBitmap = true;
|
||||
renderTexture.drawToTexture(cacheBitmap, new egret.Rectangle(0, 0, this.sourceRect.width, this.sourceRect.height));
|
||||
|
||||
this.bitmap.texture = renderTexture;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user