从外部方法调用时,RaphaelJS动画不起作用

vbnet3d

作为一名桌面开发人员,我对Javascript还是很陌生,所以我经常遇到使我困惑的问题。我正在处理RaphaelJS形状上的点击事件,最初我是通过私有方法设置对象的状态和动画的:

innershape.node.onclick = function () {
    if (scope.state === 0) {
        _setState(1);
    } else {
        _setState(0);
    }
};

function _setState(state) {
    scope.state = state;
    if (scope.state === 0) {
        innershape.animate({ fill: "#00FF19" }, 500);
    } else {
        innershape.animate({ fill: "#C05219" }, 500);
    }       
}

这按预期运行。然后,我决定添加一个外部函数,该函数将遍历所有对象并取消选择(并因此使其反向动画)所有其他形状。结果可以在以下jsfiddle中看到:http : //jsfiddle.net/txj4zasn/4/

该函数已正确调用,并且animate()函数显然已执行,但是可见的动画从未出现,并且颜色也从未改变。我怀疑这是Java语言的非常基本的知识,我只是不了解。有人可以向我解释为什么会这样吗?

伊恩

不清楚要实现什么(除了使动画正常工作之外),因此我认为最初的解决方案不好,但是我会在此基础上进行扩展。

该问题看起来有点像您要组合两个不同的元素,即功能范围和对象变量。

一个快速的解决方案是包括...

this.id = 1; 
var id = this.id; // so id now a closure to the later function

作为updateSelected(id); 这里的id在另一个函数中,所以我们不能使用'this.id'。但是后来您要检查z [i] .id,因此也需要对其进行定义。

jsfiddle

但是,这一切都显得笨拙,容易出错,并且很难阅读。那么第一个问题是您需要物体吗?您可以将信息存储在Raph元素的“数据”部分中,该部分已经是一个对象。

这是一个我将如何编写它的示例,我意识到这可能不合适,因为它可能是一个较大的项目的一部分,该项目需要对象中的其他元素,但它可能会给出一些想法。

function updateSelected( el ) {
    if( el.data('innerstate') == 1 ) {
        el.animate({ fill: "#00FF19" }, 500);
        el.data('innerstate',0)
    } else {
        el.animate({ fill: "#C05219" }, 500);
        el.data('innerstate',1);
    }

}

function addElement() {
    var innershape = paper.rect(100,100,100, 100);
    innershape.attr({fill: "#00FF19" });
    innershape.data('innerstate', 0);
    innershape.click( function () {
        updateSelected( innershape )
    } );

};

addElement();

这段代码我几乎可以立即阅读,并且知道如何以及是否可以使用。

jsfiddle

jsfiddle显示它结合了多个元素,或者jsfiddle紧凑了一点

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从外部javascript调用时,getJSON url方法不起作用

来自分类Dev

在python中调用时balance()方法不起作用

来自分类Dev

从NSObject调用时,DBRestClient不起作用

来自分类Dev

从BroadcastReceiver调用时,startActivity不起作用

来自分类Dev

从NSObject调用时,DBRestClient不起作用

来自分类Dev

从systemd调用时ssh不起作用

来自分类Dev

从外部类调用时,Laravel 5 重定向不起作用

来自分类Dev

从外部 Angular 6 聊天窗口调用时,Dialogflow Webhook 不起作用

来自分类Dev

单击登录按钮不起作用时显示加载动画

来自分类Dev

外部调用脚本不起作用

来自分类Dev

外部调用脚本不起作用

来自分类Dev

PHP Prepare方法在两次调用时不起作用?

来自分类Dev

每次发出Rest API调用时,CN1 stop()方法都不起作用

来自分类Dev

当使用单个参数调用时,带有可选参数的方法委托不起作用

来自分类Dev

对象模拟不起作用(其为空)并在方法调用时返回 NullPointerException

来自分类Dev

从C#调用时C#类方法确实起作用,但从VB.Net调用时则不起作用

来自分类Dev

touchMoved方法中的动画不起作用

来自分类Dev

jQuery 动画方法不起作用

来自分类Dev

从x64中的外部VB6宏调用时,AnyCPU COM库(.tlb文件)不起作用

来自分类Dev

从cron调用时脚本不起作用

来自分类Dev

使用子流程调用时,卷曲不起作用

来自分类Dev

从类中调用时,清除主机不起作用

来自分类Dev

执行函数调用时,Onclick函数不起作用

来自分类Dev

通过.NET API调用时DynamoDB UpdateItem不起作用

来自分类Dev

从嵌套函数调用时,compadd不起作用

来自分类Dev

ssh当以变量形式调用时while循环不起作用

来自分类Dev

从子组件调用时,回叫功能不起作用

来自分类Dev

切换功能在调用时不起作用

来自分类Dev

在函数开始处调用时,ClearTimeout不起作用

Related 相关文章

  1. 1

    从外部javascript调用时,getJSON url方法不起作用

  2. 2

    在python中调用时balance()方法不起作用

  3. 3

    从NSObject调用时,DBRestClient不起作用

  4. 4

    从BroadcastReceiver调用时,startActivity不起作用

  5. 5

    从NSObject调用时,DBRestClient不起作用

  6. 6

    从systemd调用时ssh不起作用

  7. 7

    从外部类调用时,Laravel 5 重定向不起作用

  8. 8

    从外部 Angular 6 聊天窗口调用时,Dialogflow Webhook 不起作用

  9. 9

    单击登录按钮不起作用时显示加载动画

  10. 10

    外部调用脚本不起作用

  11. 11

    外部调用脚本不起作用

  12. 12

    PHP Prepare方法在两次调用时不起作用?

  13. 13

    每次发出Rest API调用时,CN1 stop()方法都不起作用

  14. 14

    当使用单个参数调用时,带有可选参数的方法委托不起作用

  15. 15

    对象模拟不起作用(其为空)并在方法调用时返回 NullPointerException

  16. 16

    从C#调用时C#类方法确实起作用,但从VB.Net调用时则不起作用

  17. 17

    touchMoved方法中的动画不起作用

  18. 18

    jQuery 动画方法不起作用

  19. 19

    从x64中的外部VB6宏调用时,AnyCPU COM库(.tlb文件)不起作用

  20. 20

    从cron调用时脚本不起作用

  21. 21

    使用子流程调用时,卷曲不起作用

  22. 22

    从类中调用时,清除主机不起作用

  23. 23

    执行函数调用时,Onclick函数不起作用

  24. 24

    通过.NET API调用时DynamoDB UpdateItem不起作用

  25. 25

    从嵌套函数调用时,compadd不起作用

  26. 26

    ssh当以变量形式调用时while循环不起作用

  27. 27

    从子组件调用时,回叫功能不起作用

  28. 28

    切换功能在调用时不起作用

  29. 29

    在函数开始处调用时,ClearTimeout不起作用

热门标签

归档