问题标签 [transferable]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
797 浏览

javascript - 将可转移对象与共享工作者一起使用

在我的共享工作者中使用可转移对象时,我在主线程中收到nullevent.data经过一番搜索,我发现这篇文章解释说ArrayBuffer当它通过 a 时总是MessagePort丢失MessageChannel

共享工作者通信也使用端口和消息通道完成。这是否意味着无法在SharedWorker实例中使用可转移对象?还是有一些解决方法?

我需要将一个巨大string的从SharedWorkerGlobalScope回传输到主线程。想法是将其转换ArrayBuffer为如本例所示的,然后传输缓冲区。据说这比发送字符串要快得多......

发送数据:

接收数据:

0 投票
1 回答
5872 浏览

javascript - 无法在“DedicatedWorkerGlobalScope”上执行“postMessage”:索引 0 处的值没有可转移类型

这是我的工人的代码:

这是我使用工人的代码:

但是当调用worker代码中的postMessage时,它给了我这个错误:“无法在'DedicatedWorkerGlobalScope'上执行'postMessage':索引0处的值没有可转移的类型。”

我还尝试使用以下代码序列化对象:

但一切都没有改变。

- - - 编辑 - - - - - - - - - - - - - - - - - - - - - - ---------------------

我在工作文件中尝试了以下代码:

onmessage 函数中的 postMessage 是唯一给我一个错误的。

0 投票
1 回答
683 浏览

javascript - 使用 javascript 将 Three.js 网格发布到 Web Worker

我有一个关于对象的数组,使用 Three.js 创建的网格,我想在 Web Worker 中执行一些操作。所以问题是我如何将它们发布给工人?

据我了解,有一种叫做可转移对象的东西使用了一种叫做的东西,ArrayBuffer但我找不到任何关于如何将我的对象数组转换为那个的信息。或者这可能是不可能的?

0 投票
1 回答
272 浏览

java - 从自定义 DataFlavor 中获取 DataFlavor[]

我想创建一个程序,将图像从文件夹复制到剪贴板,但图像变黑。

在做了一些研究之后,我发现:当从 Java 剪贴板对象作为图像检索时,Outlook 的剪贴板副本总是设置黑色背景 他说使用 image\x-emf 解决了这个问题。但我不知道如何从“ new DataFlavor("image/x-emf") ”中获取 TransferData

方法调用(其中 emojiLocation 是图像的路径):

提前致谢!


0 投票
1 回答
395 浏览

java - 将剪贴板设置为透明图像

我正在创建一个需要将图像复制到剪贴板的程序。问题是图像具有透明背景,并且每当我复制它时,图像的背景都是黑色而不是透明。自 2 天前以来,我尝试了很多东西,但都没有奏效。imageSelection 类基于http://www.java2s.com/Tutorial/Java/0120__Development/SettinganimageontheclipboardwithacustomTransferableobjecttoholdtheimage.htm

称呼:

谢谢

我正在通过将内容粘贴到 Discord 中来测试内容(聊天应用程序,它确实支持透明度,我确信这一点)。我正在使用 jdk1.8.0_131。我正在使用完全更新的 Windows 10 64 位。如果需要,完整的源代码在这里:https ://github.com/KingOffNothing/EmojiMenu-for-discord/tree/master/src/Package1 程序所做的是将剪贴板更改为选定的图像,然后是用 AHK 编写的程序将模拟粘贴图像的按键 ctrl+v。

0 投票
1 回答
161 浏览

javascript - JavaScript Transferable Objects:为什么引擎不保留原始实例?

我正在阅读有关网络工作者的这篇文章,并且遇到了有关可转移对象的这一部分:

使用 Transferable Objects,数据从一个上下文传输到另一个上下文。它是零拷贝,极大地提高了向 Worker 发送数据的性能。如果您来自 C/C++ 世界,请将其视为传递引用。但是,与传递引用不同,调用上下文中的“版本”一旦转移到新上下文就不再可用。

为什么?根据我对抽象堆栈机器的理解,可以保留原始指针似乎是完全合理的。诚然,由于数据现在是从另一个上下文中引用的,因此继续使用它将是一项棘手的任务,但并非完全不合理。为什么原始对象被清除?

如果有人在那里有一些有价值的见解,我还想了解整个过程是如何在幕后进行的。

0 投票
1 回答
1001 浏览

javascript - Javascript:如何使用带有视图的数组缓冲区来发送可传输对象

假设我有一个名为的数组

第一个数组有 2000 个对象,它们具有以下内容

假设我想将 Arr2 定义为

然后将 arr2 发送给网络工作者。

这就是目标,我想知道我将如何去做,首先发送并访问第一个数组,然后再做另一个。这和 ik 有可以定义的数组缓冲区,然后可以从缓冲区制作数据视图,但我不知道你将如何将我上面的内容发送给工作人员,因为我不知道需要发送什么缓冲区以及如何添加必要的限制,如字节长度。我看到一个帖子,那个家伙使用了类似的东西

这是在创造我想要的东西吗?如果不是,我怎么能把我的物品转移给工人,谢谢,玩得开心。

Ps:我做这个帖子的原因是为了简化已经存在的信息,我认为这些信息对新人来说有点笼统和不受欢迎。

0 投票
1 回答
342 浏览

java - JList 上 Transferable 和 Transferhandler 的自定义删除容器

过去一周我试图解决这个问题,但不知何故我似乎无法找到解决方案。关于这个主题的信息不多,因此很难找到示例或代码来查看。

我这里有一个 JList,它使用创建自定义 Transferable 的自定义 TransferHandler,供参考,这里是所涉及类的代码:

可转让:

传输处理程序:

HBin

以及它应该如何工作的可视化,可悲的是,即使没有将容器拖到 Hbin 容器上,它也总是会消失。我一直以为它一直在工作,直到我不小心把它移到了我的框架之外,它仍然消失了。上面的代码只允许在预期的列表内拖放。

在此处输入图像描述

我的问题是如何添加功能以正确使容器仅在拖到 Hbin 容器上时才消失

我使用的代码的第一部分是这个

我背后的逻辑是 List 和 Hbin 共享相同的类型(RewardItem),我可以比较,后来我意识到(在制作该方法的更通用版本之后)数据将始终是 RewardItem 类型并且总是会导致在清理电话中。这导致了我目前仍然面临的错误。

我今天早些时候采取的方法真的让我质疑自己的想法,也让我写了这篇文章。我在名为 bin 的 TransferHandler 中添加了一个布尔值,默认情况下为 false。在 canImport 签入 importData 之后,我添加bin = info.getComponent() instanceof HBin了我认为应该可以工作的内容。但这个领域总是假的。我继续为它添加了一个日志

它最终打印了 IMPORT,然后是 bin。在调用 importData exportData 之后,我在其中记录了 bin 的值,无论出于何种原因,它现在再次为 false。与此同时,moveAllowed 字段似乎发生了变化。

这是我完全修改过的 TransferHandler

在列表内移动时一切正常(打印)

但是当掉到 Hbin 容器上时,我无法解释发生了什么(打印)

我很确定它应该是假/真

现在我被卡住了,无法使容器仅在放到 Hbin 上时消失,同时也对字段值在明确记录它已设置为 true 时没有改变感到困惑。

请帮忙...

0 投票
0 回答
92 浏览

java - 如何将整个 jcomponent 对象转换为可转移的?

我有一个程序,我想在其中使用拖放。我浏览了 java 拖放文档,但我真的找不到答案。我想使用 TransferHandler。基本上我要做的是传输整个 JTextField ,而不仅仅是其中的文本,因此它保留了它的所有属性。或者换句话说,整个对象。我看到你可以做一个自定义的 DataFlavor。

我可能会像这样导入数据:

我遇到的问题是如何发送数据以便我可以读取它。我在想这样的事情。

我应该如何转换它以便能够发送 JTextField 并在删除后重建它。

0 投票
1 回答
966 浏览

ecmascript-6 - 使用 ES6 网络工作者的可迁移自定义类

在 Javascript ES6 中,在浏览器中,我想使用“Transferable”接口将自定义类对象传输到 Web Worker。这可能吗?我可以找到有关 ArrayBuffer 对象的文档,但不能找到自定义类对象。

这不是如何通过 Web-Workers 传递自定义类实例的副本?因为我的问题是关于 Transferable 接口的。我想将我的自定义类实例传递给工作人员而不复制它。