1

プロジェクトのビュー間でクロスフェード アニメーションを実行する必要があります。アニメーションを作成し、ビュー/ウィンドウを作成するのに最適な方法はどれですか。この回避策の解決策を教えてください。私のテスト環境には、Titanium 3.1.2.GA、Alloys、および Android Emulator を使用しています。例はありますか?appcelerator フォーラムの私のスレッド

index.xml

<Alloy>
    <Window id="fblogin" class="container">
        <Require src="loginsuccess" id="loginsuccess"></Require>
        <Require src="loginFailure" id="loginFailure"></Require>
        <Require src="loginPage" id="loginPage"></Require>
    </Window>
</Alloy>

loginPage.xml

<Alloy>
    <View class="container">
        <LoginButton ns="Alloy.Globals.Facebook"/>
        <Button title="Google"></Button>
    </View>
</Alloy>

loginFailure.xml

<Alloy>
    <View class="container">
        <Label>Login Failed. Please try again later.</Label>
    </View>>
</Alloy>

loginsuccess.xml

<Alloy>
    <View class="container">
        <Label>Login Successful</Label>     
    </View>
</Alloy>

index.js

var animation = require('alloy/animation');
var loginPage = $.loginPage;
var loginsuccess = $.loginsuccess;
var loginFailure = $.loginFailure;
function loginFails(){
    animation.crossFade(loginPage, loginFailure, 500, function(){});
}
function loginSuccess(){
    animation.crossFade(loginPage, loginsuccess, 500, function(){});
}
$.fblogin.open();
4

1 に答える 1

0

あなたのリンクから問題の説明を参照してください:

loginFails() または loginSuccess() を呼び出すと、コントローラー Index にあり、他のビュー コントローラーにはないため、エラーが表示されます。これを解決するには?

必要なビューの要素を参照するには、getView('elementId') を使用する必要があります。

index.xml

<Alloy>
    <Window id="fblogin" class="container">
        <Require src="loginsuccess" id="loginsuccess"></Require>
        <Require src="loginFailure" id="loginFailure"></Require>
        <Require src="loginPage" id="loginPage"></Require>
    </Window>
</Alloy>

loginsuccess.xml

<Alloy>
    <View class="container" id="successContainer" visible="false">
        <Label>Login Successful</Label>     
    </View>
</Alloy>

index.js

var successView = $.loginsuccess.getView('successContainer');

successView でクロスフェードを実行できるようになりました。

編集:
コンテナー ビューに visible="false" を追加しました

于 2013-09-23T13:48:42.253 に答える