1

私はmootools1.4.1を使用しており、完了時に別の関数を起動するために画面の幅を「トゥイーン」するdivを取得しようとしています。しかし、トゥイーンは発火し続けており、私が望んでいる機能を発火させているとは思いません。

コードは以下のとおりです。

$('photo-loading_amt').set('tween', {duration: '1000ms',
                                     link: 'cancel',
                                     transition: 'linear',
                                     property: 'width',
                                     onComplete: function() {
                                                   var photoContainers = $$('.photo-container')

                                                   if (photoNum != photoContainers.length)  {
                                                       nextPhoto(photoNum.toInt() + 1);
                                                   }
                                                   else {
                                                       nextPhoto(1);
                                                   }    
                                                 }
                           });

あなたが持っているかもしれないどんな助けでもありがたいです。

@Dimitar Christoff、nextPhoto関数のコードは次のとおりです。

function nextPhoto(photoNum)    {
resetTimeline();

var photoContainers = new Array();

photoContainers = $$('.photo-container');

var photoFx = new Fx.Tween(photoContainers[photoNum.toInt() - 1], {
                                duration: 'normal',
                                transition: Fx.Transitions.Sine.easeOut,
                                property: 'opacity',

                                onComplete: function() {
                                                            photoContainers[photoNum.toInt() - 1].setStyle('visibility', 'hidden');
                                                            photoContainers[photoNum.toInt() - 1].setStyle('opacity', 1);

                                                            if (photoNum == photoContainers.length) {
                                                                photoContainers[0].setStyle('z-index', photoContainers.length);
                                                            }
                                                        }
                            });

if (photoNum == photoContainers.length) {
    photoContainers[0].setStyle('z-index', 0);
}

photoFx.tween(1, 0);
//alert("photoNum = " + photoNum + "\n" + "photoContainers.length = " + photoContainers.length);
if (photoNum == photoContainers.length) {
    photoContainers[0].setStyle('visibility', 'visible');       
}
else    {
    photoContainers[photoNum.toInt()].setStyle('visibility', 'visible');
    //loadingPhotos(photoNum.toInt() + 1);
}
// hard reset the loadingPhotos function    

}//FUNCTIONの終わりnextPhoto

4

1 に答える 1

0

あなたのコードには明らかなループが見られないので、その影響は次の原因によるものと思われます

link: 'cancel'

コードの最初のブロックで。Mooのドキュメントによると、これは次のようになります。

'cancel'-エフェクトの実行中に開始するために行われた呼び出しは、現在実行中のトランジションよりも優先されます。新しいトランジションはすぐに開始され、現在実行中のトランジションがキャンセルされます。

したがって、これはトゥイーンを混乱させる可能性があります。ただし、これは意図的に追加したものと思われます。これを、最初と2番目のトゥイーンセットアップの両方でchainまたはに変更して、何が最適に組み合わされるかを確認します。ignoreこれで解決しない場合は、さらにコードを投稿することもできます。たとえば、resetTimeline関数のコードが表示されません。おそらくあなたのコードはここで立ち往生しています。

于 2011-10-28T07:53:43.717 に答える