Dart Documentationbot_retainedSpriteElement

SpriteElement class

class SpriteElement extends ImgElement {
  final Coordinate startCoordinate;
  final Vector nextDelta;
  final int count;

  int _frame = 0;

  factory SpriteElement.horizontalFromUrl(String src, num w, num h,
      int count, num xDelta, [Coordinate start = const Coordinate()]) {
    final img = new ImageElement(src, null, null);

    return new SpriteElement(img, w, h, start, new Vector(xDelta, 0), count);
  }

  SpriteElement(ImageElement image, num width, num height,
                this.startCoordinate, this.nextDelta, this.count) :
    super(width, height, image);

  void nextFrame() {
    setFrame(_frame + 1);
  }

  void previousFrame() {
    setFrame(_frame - 1);
  }

  void setFrame(int frame) {
    _frame = (frame % count);
    invalidateDraw();
  }

  void _doDraw(CanvasRenderingContext2D ctx) {
    final int msPerFrame = 1000 ~/ count;

    final int currentMS = window.performance.webkitNow().toInt();

    final int theFrame = (currentMS ~/ msPerFrame) % count;

    final sourceCoord = startCoordinate + nextDelta * theFrame;

    final rect = new Box.fromCoordSize(sourceCoord, size);

    CanvasUtil.drawImage(ctx, _image, rect);
  }
}

Extends

DisposableImpl > AttachableObject > PElement > ImgElement > SpriteElement

Constructors

new SpriteElement(ImageElement image, num width, num height, Coordinate startCoordinate, Vector nextDelta, int count) #

SpriteElement(ImageElement image, num width, num height,
              this.startCoordinate, this.nextDelta, this.count) :
  super(width, height, image);

factory SpriteElement.horizontalFromUrl(String src, num w, num h, int count, num xDelta, [Coordinate start = const Coordinate()]) #

factory SpriteElement.horizontalFromUrl(String src, num w, num h,
    int count, num xDelta, [Coordinate start = const Coordinate()]) {
  final img = new ImageElement(src, null, null);

  return new SpriteElement(img, w, h, start, new Vector(xDelta, 0), count);
}

Properties

final bool cacheEnabled #

inherited from PElement
final bool cacheEnabled;

bool clip #

inherited from PElement
bool clip = false;

final int count #

final int count;

num height #

inherited from PElement
num get height => _height;
void set height(num value) {
  assert(isValidNumber(value));
  _height = value;
  invalidateDraw();
}

final EventRoot<EventArgs> invalidated #

inherited from PElement
EventRoot<EventArgs> get invalidated => _invalidatedEventHandle;

final bool isDisposed #

inherited from DisposableImpl
bool get isDisposed => _disposed;

final Vector nextDelta #

final Vector nextDelta;

final ElementParent parent #

inherited from PElement
ElementParent get parent => _parent;

final Type runtimeType #

inherited from Object

A representation of the runtime type of the object.

external Type get runtimeType;

Size size #

inherited from PElement
Size get size => new Size(_width, _height);
void set size(Size value) {
  assert(value.isValid);
  _width = value.width;
  _height = value.height;
  invalidateDraw();
}

final Coordinate startCoordinate #

final Coordinate startCoordinate;

num width #

inherited from PElement
num get width => _width;
void set width(num value) {
  assert(isValidNumber(value));
  _width = value;
  invalidateDraw();
}

Operators

bool operator ==(other) #

inherited from Object

The equality operator.

The default behavior for all Objects is to return true if and only if this and other are the same object.

If a subclass overrides the equality operator it should override the hashCode method as well to maintain consistency.

bool operator ==(other) => identical(this, other);

Methods

AffineTransform addTransform() #

inherited from PElement
AffineTransform addTransform(){
  validateNotDisposed();
  var tx = new AffineTransform();
  _transforms.add(tx);
  return tx;
}

void dispose() #

inherited from DisposableImpl
void dispose(){
  if (!_disposed) {
    // Set disposed_ to true first, in case during the chain of disposal this
    // gets disposed recursively.
    this._disposed = true;
    this.disposeInternal();
  }
}

void disposeInternal() #

inherited from PElement

Do not call this method directly. Call dispose instead. Subclasses should override this method to implement Disposable behavior.

docs inherited from DisposableImpl
void disposeInternal(){
  super.disposeInternal();
  _invalidatedEventHandle.dispose();
}

void drawCore(CanvasRenderingContext2D ctx) #

inherited from PElement
void drawCore(CanvasRenderingContext2D ctx){
  if(cacheEnabled) {
    _drawCached(ctx);
  } else {
    _drawNormal(ctx);
  }
}

void drawOverride(CanvasRenderingContext2D ctx) #

inherited from ImgElement
void drawOverride(CanvasRenderingContext2D ctx) {
  if(_image.complete) {
    _doDraw(ctx);
  } else if(!_waitingOnLoad) {
    _waitingOnLoad = true;
    // TODO: some day we'll have a way to remove these cleanly
    //       ...because this handled should be disposed :-/
    _image.on.load.add(_onImageLoad);
  }
}

AffineTransform getTransform() #

inherited from PElement
AffineTransform getTransform() {
  var tx = new AffineTransform();
  _transforms.forEach(tx.concatenate);
  return tx;
}

AffineTransform getTransformToRoot() #

inherited from PElement
AffineTransform getTransformToRoot(){
  var tx = new AffineTransform();
  if(_parent != null){
    tx.concatenate(_parent.getTransformToRoot());
  }
  tx.concatenate(getTransform());
  return tx;
}

int hashCode() #

inherited from Object

Get a hash code for this object.

All objects have hash codes. Hash codes are guaranteed to be the same for objects that are equal when compared using the equality operator ==. Other than that there are no guarantees about the hash codes. They will not be consistent between runs and there are no distribution guarantees.

If a subclass overrides hashCode it should override the equality operator as well to maintain consistency.

external int hashCode();

new ImgElement(num width, num height, ImageElement _image, [bool cacheEnabled = false]) #

inherited from ImgElement
ImgElement(num width, num height, this._image, [bool cacheEnabled = false]) :
  super(width, height, cacheEnabled);

factory ImgElement.fromUrl(String src, num w, num h) #

inherited from ImgElement
factory ImgElement.fromUrl(String src, num w, num h) {
  final img = new ImageElement(src, null, null);

  return new ImgElement(w, h, img);
}

void invalidateDraw() #

inherited from PElement
void invalidateDraw(){
  validateNotDisposed();
  if(_lastDrawSize != null){
    _lastDrawSize = null;
    _invalidateParent();
  }
}

void nextFrame() #

void nextFrame() {
  setFrame(_frame + 1);
}

noSuchMethod(String name, List args) #

inherited from Object

noSuchMethod is invoked when users invoke a non-existant method on an object. The name of the method and the arguments of the invocation are passed to noSuchMethod. If noSuchMethod returns a value, that value becomes the result of the original invocation.

The default behavior of noSuchMethod is to throw a noSuchMethodError.

external Dynamic noSuchMethod(String name, List args);

const Object() #

inherited from Object

Creates a new Object instance.

Object instances have no meaningful state, and are only useful through their identity. An Object instance is equal to itself only.

const Object();

new PElement(num _width, num _height, [bool cacheEnabled = false]) #

inherited from PElement
PElement(this._width, this._height, [this.cacheEnabled = false]);

void previousFrame() #

void previousFrame() {
  setFrame(_frame - 1);
}

void registerParent(ElementParent parent) #

inherited from PElement
void registerParent(ElementParent parent) {
  assert(_parent == null);
  assert(parent != null);
  _parent = parent;
}

void setFrame(int frame) #

void setFrame(int frame) {
  _frame = (frame % count);
  invalidateDraw();
}

new SpriteElement(ImageElement image, num width, num height, Coordinate startCoordinate, Vector nextDelta, int count) #

SpriteElement(ImageElement image, num width, num height,
              this.startCoordinate, this.nextDelta, this.count) :
  super(width, height, image);

factory SpriteElement.horizontalFromUrl(String src, num w, num h, int count, num xDelta, [Coordinate start = const Coordinate()]) #

factory SpriteElement.horizontalFromUrl(String src, num w, num h,
    int count, num xDelta, [Coordinate start = const Coordinate()]) {
  final img = new ImageElement(src, null, null);

  return new SpriteElement(img, w, h, start, new Vector(xDelta, 0), count);
}

String toString() #

inherited from Object

Returns a string representation of this object.

external String toString();

void update() #

inherited from PElement
void update(){ }

void validateNotDisposed() #

inherited from DisposableImpl
void validateNotDisposed() {
  assert(!_disposed);
}