FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

Fix fix animation throw by vakrilov · Pull Request #1 · NathanWalker/NativeScript · GitHub

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension .ts  (5) All 1 file type selected
Viewed files
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Unified
Split
Hide whitespace
Diff view
Unified
Split
Hide whitespace
7 changes: 1 addition & 6 deletions tests/app/ui/animation/animation-tests.ts
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,6 @@ export function test_AnimatingProperties(done) {
export function test_PlayRejectsWhenAlreadyPlayingAnimation(done) {
let label = prepareTest();

// >> animation-play
var animation = label.createAnimation({ translate: { x: 100, y: 100 }, duration: 5 });

animation.play();
Expand All @@ -70,18 +69,14 @@ export function test_PlayRejectsWhenAlreadyPlayingAnimation(done) {
done();
}
});
// << animation-play
}

export function test_CancelIgnoredWhenNotPlayingAnimation(done) {
export function test_CancelIgnoredWhenNotPlayingAnimation() {
let label = prepareTest();

// >> animation-cancel-ignore
var animation = label.createAnimation({ translate: { x: 100, y: 100 }, duration: 5 });
animation.cancel(); // should not throw
TKUnit.assert(!animation.isPlaying, "animation.isPlaying should be falsey since it was never played.");
done();
// << animation-cancel-ignore
}

export function test_CancellingAnimation(done) {
Expand Down
29 changes: 12 additions & 17 deletions tns-core-modules/ui/animation/animation-common.ts
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@ import { View } from "../core/view";

// Types.
import { Color } from "../../color";
import { isEnabled as traceEnabled, write as traceWrite, categories as traceCategories } from "../../trace";
import { isEnabled as traceEnabled, write as traceWrite, categories as traceCategories, messageType as traceType } from "../../trace";

export { Color, traceEnabled, traceWrite, traceCategories };
export { Color, traceEnabled, traceWrite, traceCategories, traceType };
export { AnimationPromise } from ".";

export module Properties {
Expand Down Expand Up @@ -84,17 +84,16 @@ export abstract class AnimationBase implements AnimationBaseDefinition {

abstract _resolveAnimationCurve(curve: any): any;

public play(): AnimationPromiseDefinition {
if (this.isPlaying) {
const reason = "Animation is already playing.";
if (traceEnabled()) {
traceWrite(reason, traceCategories.Animation, 2);
}
return <AnimationPromiseDefinition>new Promise<void>((resolve, reject) => {
reject(reason);
});
}
protected _rejectAlreadyPlaying(): AnimationPromiseDefinition{
const reason = "Animation is already playing.";
traceWrite(reason, traceCategories.Animation, traceType.warn);

return <AnimationPromiseDefinition>new Promise<void>((resolve, reject) => {
reject(reason);
});
}

public play(): AnimationPromiseDefinition {
// We have to actually create a "Promise" due to a bug in the v8 engine and decedent promises
// We just cast it to a animationPromise so that all the rest of the code works fine
var animationFinishedPromise = <AnimationPromiseDefinition>new Promise<void>((resolve, reject) => {
Expand Down Expand Up @@ -129,11 +128,7 @@ export abstract class AnimationBase implements AnimationBaseDefinition {
}

public cancel(): void {
if (!this.isPlaying) {
if (traceEnabled()) {
traceWrite("Animation is not currently playing.", traceCategories.Animation, 2);
}
}
// Implemented in platform specific files
}

public get isPlaying(): boolean {
Expand Down
19 changes: 13 additions & 6 deletions tns-core-modules/ui/animation/animation.android.ts
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
import { AnimationDefinition } from ".";
import { View } from "../core/view";

import { AnimationBase, Properties, PropertyAnimation, CubicBezierAnimationCurve, AnimationPromise, Color, traceWrite, traceEnabled, traceCategories } from "./animation-common";
import { AnimationBase, Properties, PropertyAnimation, CubicBezierAnimationCurve, AnimationPromise, Color, traceWrite, traceEnabled, traceCategories, traceType } from "./animation-common";
import {
opacityProperty, backgroundColorProperty, rotateProperty,
translateXProperty, translateYProperty, scaleXProperty, scaleYProperty
Expand Down Expand Up @@ -135,6 +135,10 @@ export class Animation extends AnimationBase {
}

public play(): AnimationPromise {
if (this.isPlaying) {
return this._rejectAlreadyPlaying();
}

let animationFinishedPromise = super.play();

this._animators = new Array<android.animation.Animator>();
Expand Down Expand Up @@ -170,10 +174,13 @@ export class Animation extends AnimationBase {
}

public cancel(): void {
super.cancel();
if (traceEnabled()) {
traceWrite("Cancelling AnimatorSet.", traceCategories.Animation);
if (!this.isPlaying) {
traceWrite("Animation is not currently playing.", traceCategories.Animation, traceType.warn);
return;
}

traceWrite("Cancelling AnimatorSet.", traceCategories.Animation);

this._animatorSet.cancel();
}

Expand Down Expand Up @@ -301,7 +308,7 @@ export class Animation extends AnimationBase {
} else {
propertyAnimation.target.style[backgroundColorProperty.keyframe] = originalValue1;
}

if (propertyAnimation.target.nativeViewProtected && propertyAnimation.target[backgroundColorProperty.setNative]) {
propertyAnimation.target[backgroundColorProperty.setNative](propertyAnimation.target.style.backgroundColor);
}
Expand Down Expand Up @@ -414,7 +421,7 @@ export class Animation extends AnimationBase {
} else {
propertyAnimation.target.style[rotateProperty.keyframe] = originalValue1;
}

if (propertyAnimation.target.nativeViewProtected) {
propertyAnimation.target[rotateProperty.setNative](propertyAnimation.target.style.rotate);
}
Expand Down
11 changes: 9 additions & 2 deletions tns-core-modules/ui/animation/animation.ios.ts
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { AnimationDefinition } from ".";
import { View } from "../core/view";

import { AnimationBase, Properties, PropertyAnimation, CubicBezierAnimationCurve, AnimationPromise, traceWrite, traceEnabled, traceCategories } from "./animation-common";
import { AnimationBase, Properties, PropertyAnimation, CubicBezierAnimationCurve, AnimationPromise, traceWrite, traceEnabled, traceCategories, traceType } from "./animation-common";
import {
opacityProperty, backgroundColorProperty, rotateProperty,
translateXProperty, translateYProperty, scaleXProperty, scaleYProperty
Expand Down Expand Up @@ -210,6 +210,10 @@ export class Animation extends AnimationBase {
}

public play(): AnimationPromise {
if (this.isPlaying) {
return this._rejectAlreadyPlaying();
}

let animationFinishedPromise = super.play();
this._finishedAnimations = 0;
this._cancelledAnimations = 0;
Expand All @@ -218,7 +222,10 @@ export class Animation extends AnimationBase {
}

public cancel(): void {
super.cancel();
if (!this.isPlaying) {
traceWrite("Animation is not currently playing.", traceCategories.Animation, traceType.warn);
return;
}

let i = 0;
let length = this._mergedPropertyAnimations.length;
Expand Down
33 changes: 17 additions & 16 deletions tns-core-modules/ui/animation/keyframe-animation.ts
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode characters
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import { View, Color } from "../core/view";

import { AnimationCurve } from "../enums";

import { isEnabled as traceEnabled, write as traceWrite, categories as traceCategories } from "../../trace";
import { isEnabled as traceEnabled, write as traceWrite, categories as traceCategories, messageType as traceType } from "../../trace";

// Types.
import { unsetValue } from "../core/properties";
Expand Down Expand Up @@ -145,28 +145,29 @@ export class KeyframeAnimation implements KeyframeAnimationDefinition {
}

public cancel() {
if (this._isPlaying) {
this._isPlaying = false;
for (let i = this._nativeAnimations.length - 1; i >= 0; i--) {
let animation = this._nativeAnimations[i];
if (animation.isPlaying) {
animation.cancel();
}
}
if (this._nativeAnimations.length > 0) {
let animation = this._nativeAnimations[0];
this._resetAnimationValues(this._target, animation);
if (!this.isPlaying) {
traceWrite("Keyframe animation is already playing.", traceCategories.Animation, traceType.warn);
return;
}

this._isPlaying = false;
for (let i = this._nativeAnimations.length - 1; i >= 0; i--) {
let animation = this._nativeAnimations[i];
if (animation.isPlaying) {
animation.cancel();
}
this._rejectAnimationFinishedPromise();
}
if (this._nativeAnimations.length > 0) {
let animation = this._nativeAnimations[0];
this._resetAnimationValues(this._target, animation);
}
this._rejectAnimationFinishedPromise();
}

public play(view: View): Promise<void> {
if (this._isPlaying) {
const reason = "Keyframe animation is already playing.";
if (traceEnabled()) {
traceWrite(reason, traceCategories.Animation, 2);
}
traceWrite(reason, traceCategories.Animation, traceType.warn);
return new Promise<void>((resolve, reject) => {
reject(reason);
});
Expand Down

Back | FazBrowse Home | New Git URL