- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
在 Adobe Animate CC HTML5 Canvas (createJS) 中,我尝试做一些非常简单的事情,当广告的整个阶段被鼠标悬停
时触发动画滚动,并触发当鼠标离开舞台时动画推出。它应该很简单,但事实并非如此。在 stage
上使用 mouseenter
和 mouseleave
是滞后的,只能间歇性地工作。 mouseover
和 mouseout
也是一样。
这是滞后和断断续续的代码:
stage.addEventListener("mouseenter", fl_MouseOverHandler.bind(this));
stage.addEventListener("mouseleave", fl_MouseOutHandler.bind(this));
function fl_MouseOverHandler(){
this.btnOverAnim.gotoAndPlay("on");
}
function fl_MouseOutHandler(){
this.btnOverAnim.gotoAndPlay("off");
}
我还在整个舞台大小的按钮上尝试了 mouseover
和 mouseout
,我遇到了同样的问题。 (同样这样做在框架内根本不起作用,广告是在框架内转换的)。我将 var frequency
设置为 90
以查看这是否有助于解决滞后问题,但事实并非如此。
这是我尝试过的简单 mouseover
/mouseout
代码:
var frequency = 90;
stage.enableMouseOver(frequency);
this.bgCta.addEventListener("mouseover", fl_MouseOverHandler.bind(this));
this.bgCta.addEventListener("mouseout", fl_MouseOutHandler.bind(this));
关于createJS website它说“您可以使用 stage.mouseInBounds
和 mouseleave
/mouseenter
事件来监视指针是否在 Canvas 上。”所以我想知道使用 stage.mouseInBounds
是否有帮助(但我无法在任何地方找到如何使用它的示例)。但实际上我认为这不会有帮助,因为我认为整个问题都是关于 createJS
没有读取鼠标速度足够快的地方。
有谁知道如何解决这种延迟和间歇性触发问题?变通办法?为什么 createJS 不像纯 js 那样只是不断地监控 mouse events
?
此外 createJS
舞台上的 mouseenter
和 mouseleave
在平板电脑或移动设备上不起作用,这是个问题,所以会更好在整个舞台大小的按钮上使用 mouseover
和 mouseout
来执行此操作。我确实尝试使用 mouseover
和 mouseout
并在按钮边缘和广告横幅边缘之间的按钮周围留出 3 像素的空间,这有帮助,但它仍然是间歇性射击。
请提出您的想法和想法。
最佳答案
鼠标悬停检查很昂贵。 Canvas 本质上只是一个位图,因此 EaselJS 无法使用来自浏览器的鼠标事件(您只需为整个 Canvas 获取一个鼠标事件)。相反,EaselJS 中的鼠标悬停要求将每个元素绘制到 1x1 像素的 Canvas 上,然后检查填充。这提供了像素完美的检测,但如果您检查大量内容或检查过于频繁,则成本很高。
降低频率:看起来您已将 frequency
设置为 90。这确实很高(两次检查之间有 11 毫秒,这基本上是在尝试达到 90 fps)。默认值为 10,这比良好的帧速率慢,但足够快以感觉响应。您可能可以将它降低到 20 左右,以在没有不必要的高的情况下给您一个充满活力的支票。
修改交互性:您可以做的另一件事是准确过滤出检查的内容。默认情况下,所有显示对象都会被检查——但您可以通过关闭off mouseEnabled
任何您不关心的东西(从检查中省略它们)来减少这种情况,并且关闭 mouseChildren
在您想要作为单个对象处理的容器上(因此像复杂按钮这样的东西只绘制一次,而不是单独绘制其所有内容)。
// Example
myBackground.mouseEnabled = false;
myButton.mouseChildren = false;
希望对您有所帮助!
关于javascript - 舞台上的 Adobe Animate CC Canvas 鼠标操作滞后且断断续续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44319542/
如图所示,上面的红色框是一个 GridBox,下面是一个带有 Splitpane (ListView) 和 Gridpane (2 Buttons) 的 VBox。我想要实现的是在单击按钮“隐藏>>"
使用 msfconsole 并搜索 linux x64 有效负载。 我遇到过舞台 Actor 、舞台和单曲?它们都有“reverse_tcp”,可以将连接反转回攻击者。然而我尝试查找舞台 Actor
我正在寻找一种将 3 个 LineCharts 放入单个窗口的方法。我的意思是我想让它们并排放置,或者一个在另一个下面。 我一直在寻找实现它的方法,但找不到任何东西。我试图搜索如何将多个场景放入一个阶
我有一个有效的 Web 功能,它使用 html5 视频和 Canvas 来访问设备相机的媒体流,然后拍照并在 Canvas 中渲染图像。效果很好,但我想使用 konvajs stage 而不是 can
我在解决这个问题时遇到了困难,并且我找不到我遇到的这个问题的正确答案。我希望将一个场景/阶段用作打开另一个场景/阶段的按钮,并且两者都通过相同的方法调用。完整的方法如下: public void c
我在 JavaFX 上有一个简单的应用程序,它实际上由几个 Pane 和按钮组成。我不知道如何在舞台调整大小时移动按钮。所以,我希望左下角的按钮即使在调整窗口大小时也始终可见。 这里是节点概览: 这里
来自 Swing 并且是 JavaFX 的新手,我尝试对 Java FX Stages 和 Scenes 进行子类化。但是我很快就遇到了问题,比如初始化过程中找不到我的子类场景的 init 方法。 所
How to animate or move window using clutter_actor_animate? Here's my code and it didn't work. clutte
有没有办法从关联的类 Controller 中获取 FXML 加载文件的 Stage/Window 对象? 特别是,我有一个模态窗口 Controller ,我需要舞台来关闭它。 最佳答案 我找不到解
我将工作代码分为 2 个文件以避免困惑。以前确实有效,但是将所有场景都放在一个类中是非常不愉快的。 以前,当您单击 Sprite 时,它会将您从菜单带到游戏。然后我将游戏组和游戏场景的代码提取到游戏类
我希望能够将 HTML 文本转换为位图,以便在 AlivePDF 中使用。我的测试适用于 TextArea,或者组件是否在舞台上或可见。但我希望能够处理不一定位于屏幕上的文本块。有谁知道如何做到这一点
我有一个 swing 应用程序,我需要在其中运行并打开 JavaFX 场景/阶段。我必须在没有扩展应用程序的情况下运行它。我已经尝试了 Stackoverflow 上发布的大多数解决方案,但没有一个适
我正在寻找一种方法来缩小 Flash 文件的高度。我可以更改宽度,但高度似乎与其所在窗口的大小有关? http://www.bevelite.com.au/test 我正在使用 page-flip.c
我需要在选择组合框元素时重新绘制窗口。如何在 JAVA FX 2.2 中重绘窗口(舞台)? 下面是我的代码 functionComboBox.valueProperty().addListener(n
我是一名优秀的程序员,十分优秀!