こんにちは私は、NativeScriptビューで動く背景イメージを実装しようとしています。Nativescript無限翻訳アニメーション
レイアウトはこの
login.xml
<Page loaded="loaded" android:actionBarHidden="true">
<GridLayout>
<Image src="~/img/haloose_bg.png" id="bg"/>
<StackLayout orientation="vertical" verticalAlignment="center" id="sl_login">
...
</StackLayout>
</GridLayout>
</Page>
ように私は、私は、次のアプローチを試してみましたImage
が背景
にランダムな方向に移動したいです:
1)設定された間隔アプローチ
utils.js
utils.animateBG = function(container,id,duration){
var newx = newy = Math.random() + 1.2;
container.getViewById(id).animate({
translate : {x: newx - 10 , y : newy + 70 },
duration : duration
});
}
login.js
exports.loaded = function(args){
page = args.object;
setInterval(utils.animateBG(page,"bg",3000),3000);
}
ユーザーがタップしたときに、私はその後、間隔をクリアしますボタンを押すか、ビューが表示されます。この方法では、4秒後にアプリがクラッシュする。
2)ループアプローチ
login.js
while(!user.hasClickedSomething){
utils.animateBG(page,"bg",3000);
}
ながらこのアプローチは、白い画面上のアプリ凍結を行います。
3)再帰的アプローチ
ここでは、アニメーションを方法編集:そして私はそれと呼ばれる条件としてuser.continueAnimation
を通過
utils.js
utils.animateBG = function(container,id,duration,continueAnimation){
if(continueAnimation){
var newx = newy = Math.random() + 1.2;
container.getViewById(id).animate({
scale : { x: newx, y: newy},
translate : {x: newx - 10 , y : newy + 70 },
duration : duration
}).then(function(){
utils.animateBG(container,id,duration,continueAnimation);
});
}
}
をループを停止する必要があります。 user
は、フィールドがデフォルトでtrue
に設定されているページにバインドされた観察可能なビューモデルです。
login.js
exports.pageloaded = function(args){
page=args.object;
page.bindingContext = user;
utils.animateBG(page,"bg",3000,user.continueAnimation);
}
私はその後、私は他のボタンをクリックしたときfalse
にuser.continueAnimation
を設定しよう、何とかそれは常にメソッド内で忠実。この結果、アニメーションが停止することはありません。別のビューに戻って戻ってきたら、アプリケーションがフリーズしたりクラッシュしたりします。
私は何をしようとしていますか?それを行う良い方法はありますか? ありがとう
このアプローチは素晴らしいですね!コードは機能しません=(私はドキュメントを見て、何が修正する必要があるかを見てみましょう! –
それは私のために働いた - 最新のNativeScript 2.0.0をインストールしてみてください –
今でした!ありがとう –