Titanium Appcelerator:我如何定位$(this)元素?

时间:2013-01-31 11:52:36

标签: ios animation appcelerator titanium-mobile transition

我正在使用钛金属加速器设计一个flashcard应用程序,最终目的是使用一个可滚动的视图来显示“包”中的每张卡,然后点击一张卡(即视图中的卡)这应该围绕它旋转轴(即翻转)显示反向。

您可以从下图中看到我希望实现的目标。

enter image description here

不幸的是,当点击其中一个面板而不是它的子视图动画时,而不是滚动视图中的最后一个孩子动画。

我理解这与我在循环中分配变量的事实有关,但是如果有人可以查看我的代码并告诉我我做错了什么就会很棒。

在JQuery中它看起来像这样

$(FrontView).click(function(){

$(this).parent().flip() //how do I access $(this) and $(this).parent() in Appcelerator?

});

这是我的appcelerator代码:

while(rows.isValidRow()){

         var FrontView = Ti.UI.createView({

          backgroundImage: '/global/card_bg.png',
          width: 295,
         height:297

    });  

         var BackView = Ti.UI.createView({

          backgroundImage: '/global/card_bg.png',
          width: 295,
          height:297

    });  


 var ControlView = Titanium.UI.createView({
 backgroundColor:"#333",
 bubbleParent : false,
 width: 295,
 height:297,
 top : 100

}); 

FrontView.addEventListener('singletap', function() {
        Ti.API.info('singletap');
        ControlView.animate({view:BackView,transition:Ti.UI.iPhone.AnimationStyle.FLIP_FROM_RIGHT});

    });

BackView.addEventListener('singletap', function() {
        Ti.API.info('singletap');
ControlView.animate({view:FrontView,transition:Ti.UI.iPhone.AnimationStyle.FLIP_FROM_LEFT});

    });


  $.scrollable_view.addView(ControlView);
  ControlView.add(BackView);  
  ControlView.add(FrontView);  

 rows.next();

} //endwhile

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

如果您在事件回调中添加了一个返回变量,则可以访问该点击源。试试这个,看它是否有效:

FrontView.addEventListener('singletap', function(e) {
    Ti.API.info('singletap');
    e.source.animate({view:BackView,transition:Ti.UI.iPhone.AnimationStyle.FLIP_FROM_RIGHT});
});

BackView.addEventListener('singletap', function(e) {
    Ti.API.info('singletap');
    e.source.animate({view:FrontView,transition:Ti.UI.iPhone.AnimationStyle.FLIP_FROM_LEFT});
});

答案 1 :(得分:0)

我发现当你在Scrollable View的EventListener中翻转卡片时它会起作用。 看看这个:https://gist.github.com/4683264