由 CamanJS 修改的 KineticJS 画布

2023-12-04

我正在尝试申请CamanJS过滤到使用 KineticJS 创建的画布。有用:

Caman("#creator canvas", function()
{
    this.lomo().render();
});

应用 CamanJS 过滤器后,我尝试使用画布执行某些操作(例如,拖动并移动图层或仅单击它),但随后画布恢复到其原始状态(在应用 CamanJS 过滤器之前)。所以问题是:如何“告诉”KineticJS 更新缓存(?)或执行诸如 stage.draw() 之类的操作来保留新的画布数据?

Here is jsfiddle(点击“应用过滤器”,处理完成后,尝试拖动星号)。

顺便说一句:为什么处理这么慢?

提前致谢。


正如您所发现的,Kinetic 在内部重绘时会重绘原始图像。

您的 Caman 修改内容不会被使用或保存。

为了保持卡曼效果,您可以创建一个离屏画布并指示您的 Kinetic.Image 从该离屏画布获取其图像。

然后您可以使用 Caman 来过滤该画布。

结果是 Kinetic 将使用您的 Caman 修改后的画布图像进行内部重绘。

Demo: http://jsfiddle.net/m1erickson/L3ACd/

代码示例:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Prototype</title>
    <script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script>
    <script src="http://d3lp1msu2r81bx.cloudfront.net/kjs/js/lib/kinetic-v4.7.2.min.js"></script>
    <script src="http://cdnjs.cloudflare.com/ajax/libs/camanjs/3.3.0/caman.full.min.js"></script>
<style>
    body{padding:20px;}
    #container{
      border:solid 1px #ccc;
      margin-top: 10px;
      width:350px;
      height:350px;
    }
</style>        
<script>
$(function(){

    var stage = new Kinetic.Stage({
        container: 'container',
        width: 350,
        height: 350
    });
    var layer = new Kinetic.Layer();
    stage.add(layer);

    // create an offscreen canvas
    var canvas=document.createElement("canvas");
    var ctx=canvas.getContext("2d");

    // load the star.png
    var img=new Image();
    img.onload=start;
    img.crossOrigin="anonymous";
    img.src="https://dl.dropboxusercontent.com/u/139992952/stack1/star.png";
    // when star.png is loaded...
    function start(){

        // draw the star image to the offscreen canvas
        canvas.width=img.width;
        canvas.height=img.height;
        ctx.drawImage(img,0,0);

        // create a new Kinetic.Image
        // The image source is the offscreen canvas 
        var image1 = new Kinetic.Image({
            x:10,
            y:10,
            image:canvas,
            draggable: true
        });
        layer.add(image1);
        layer.draw();

    }

    // lomo the canvas
    // then redraw the kinetic.layer to display the lomo'ed canvas 
    $("#myButton").click(function(){
        Caman(canvas, function () {
            this.lomo().render(function(){
                layer.draw();
            });
        });
    });


}); // end $(function(){});

</script>       
</head>

<body>
    <button id="myButton">Lomo the draggable Star</button>
    <div id="container"></div>
</body>
</html>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

由 CamanJS 修改的 KineticJS 画布 的相关文章

  • 需要帮助从数组中为国家/地区着色,保留其余默认颜色

    我需要一些帮助从我创建的数组中获取数据 然后仅对数组中存在的国家 地区进行着色 而不在数组中的其余国家 地区我希望保留为默认颜色 我正在使用 D3 来完成所有这些工作 并且我非常确定我可以通过 D3 实现我需要的目标 但不确定如何实现 我想
  • 如何在phonegap应用程序中使用存储在localStorage中的json feed?

    这就是我正在做的 向我的网络服务器发出请求 响应采用 json 格式 使用 jquery 模板在我的应用程序中呈现回调数据 非常简单 就像魅力一样 问题是 我想在本地存储一些数据 这样我的应用程序就不必每次都从服务器获取它 3g 很慢 每笔
  • 错误找不到“pages”目录。请在项目根目录下创建一个”

    以前我的项目设置是 public next src pages components assets next config js 这工作正常 但我将结构更改为以下 public src client next config js jscon
  • React 不响应按键事件

    我正在尝试实现一些非常基本的按键检测 但我根本无法让它工作 我有一个裸露的组件 应该在onKeyDown事件 但控制台中没有任何内容被注销 class App extends React Component constructor prop
  • 在 javascript 中访问 ajax POST 响应

    我正在从 javascript 函数发出 ajax POST 请求 function UpdateMetrics ajax type POST url MyHandler ashx Param1 value1 data contentTyp
  • 根据用户区域设置过滤字符串列表

    当使用 AngularJS 1 6 处理 JavaScript 项目时 我有一个要过滤的字符串列表 例如 假设我的列表包含 rbol cig e a nido and tubo 当过滤西班牙语字符串时 如果我过滤 u 我会期望两者cig e
  • 通过 Javascript 将图像切割成碎片

    我正在创建一个简单的拼图游戏 为了做到这一点 我需要将我正在使用的图片切成 20 块 Javascript 有没有办法将一张图片切成 20 个相等的部分 并将它们保存为网页中的 20 个不同的对象 或者我只需要进入 Photoshop 自己
  • 缩放事件侦听器之前的 Javascript OpenLayers

    我正在尝试将 OpenLayers 设置为在缩放开始之前不显示矢量图层 并使其在缩放结束后重新出现 我已经像这样建立了缩放结束部分 map new OpenLayers Map map element eventListeners zoom
  • 使用 javascript 禁用按钮:FF 与 IE

    我有一排按钮 它们都会创建一个我想在新选项卡中打开的 pdf 文件 这样按钮页面就会保持在顶部 并且 pdf 会打开以进行打印 为了防止单击按钮两次 我禁用该按钮 如下所示 我使用 python
  • 使用 jquery 通配符检查 cookie 名称

    我有一个生成动态 cookie 的表单 例如 webform 62 1234356 62 1234356 可以是任意数字 我需要使用一些通配符检查来检查名称以 webform 开头的 cookie 是否存在 下面不起作用 if cookie
  • 获取 JSON 中的 HTML 以在 React 组件中呈现为 HTML

    试图找出如何让链接实际呈现为链接 现在 在我从 Json 文件中读取这行文本后 React 将超链接渲染为文字文本 而不将其渲染为链接 一些数据 json about John has a blog you can read a href
  • 如何创建自定义元素扩展类的新实例

    我正在尝试以下示例谷歌开发者网站 https developers google com web fundamentals getting started primers customelements extendhtml我收到错误 Typ
  • Javascript 正则表达式来匹配正则表达式

    我正在研究一个特殊的正则表达式来匹配 javascript 正则表达式 现在我有这个正则表达式工作 i g m 例如 foo match i g m gt foo foo undefined foo i match i g m gt foo
  • 为什么 document.getelementbyId 在 Firefox 中不起作用?

    我不明白为什么 document getElementById 在 Firefox 中不起作用 document getElementById main style width 100 当我检查 Firebug 时 它说 类型错误 docu
  • React + Semantic-UI:在 UI MODAL 中使用表单

    在没有 React 的普通旧 Semantic UI 中 我已经能够毫无问题地将表单放入 Modal 中 使用 Semantic UI React 版本 我能够在模态中显示表单 但它并没有按照我期望的方式工作 例如 模态框显示后 模态框内的
  • Cosmos DB 中的 MaxItemCount 源选项属性不起作用

    我正在尝试编写一个运行 SQL 查询的简单存储过程 并且我想通过使用 MaxItemCount 属性来限制结果 查询生成 3 个文档 但我只想返回 1 个文档 我使用 MaxItemCount 属性强制执行此限制 但这似乎不起作用 func
  • 为什么从浏览器上传到 S3 时出现 403 错误?

    因此 我尝试查看此处之前的答案 但似乎没有任何效果 我正在使用 Dropzone 它似乎发出 OPTIONS 请求来获取所有允许的 CORS 相关信息 但它似乎没有正确返回 因此 通过查看 Chrome 开发工具 我有以下请求标头 Host
  • 允许使用 grunt browserify 进行全局转换

    我已将 jQuery 添加为 html 文件中的脚本标记 并将其添加到package json与一起工作browserify shim如下 browserify transform browserify shim browserify sh
  • 如何按字母顺序排序并先小写排序

    如何获得以下排序的结果Food to Eat然后是 食物123 显然 第二个较低的 o 应该将 要吃的食物 带到排序后的第一个项目中 我很惊讶这个问题不容易通过谷歌找到答案 这个壮举没有包含在 javascript 标准中也让我感到惊讶 F
  • 使用 javascript Array reduce() 方法有什么真正的好处吗?

    reduce 方法的大多数用例都可以使用 for 循环轻松重写 对 JSPerf 的测试表明 reduce 通常会慢 60 75 具体取决于每次迭代内执行的操作 除了能够以 函数式风格 编写代码之外 还有什么真正的理由使用reduce 吗

随机推荐

  • 在启用 cookie 的网站上使用 urlretrieve 的多线程网络抓取工具

    我正在尝试编写我的第一个 Python 脚本 经过大量谷歌搜索 我认为我已经完成了 然而 我需要一些帮助才能冲过终点线 我需要编写一个脚本来登录启用 cookie 的站点 抓取一堆链接 然后生成一些进程来下载文件 我的程序以单线程运行 所以
  • 同一项目的单独丰富代码片段范围

    我正在为我的网上商店创建丰富的片段 我使用的项目类型之一是 组织 类型 问题是我已经在网上商店的页眉中指定了组织名称和图像 并在页脚中指定了地址 介于两者之间的是网上商店的其余部分 其中包含所有产品 评论等 当我测试我的丰富网页摘要时htt
  • .NET MethodInfo 缓存可以清除或禁用吗?

    Per MSDN 呼叫Type GetMethods 将反映的方法信息存储在MemberInfo缓存 因此不必再次执行昂贵的操作 我有一个扫描程序集 类型的应用程序 寻找与给定规范匹配的方法 问题在于 由于 NET 依赖于方法元数据 因此内
  • sql server 中的顺序分组依据

    对于该表 ID Status Value 1 1 4 2 1 7 3 1 9 4 2 1 5 2 7 6 1 8 7 1 9 8 2 1 9 0 4 10 0 3 11 0 8 12 1
  • 在 Hadoop 中链接多个 MapReduce 作业

    在许多应用 MapReduce 的现实生活中 最终的算法最终都是几个 MapReduce 步骤 即Map1 Reduce1 Map2 Reduce2等等 因此 您可以将最后一次归约的输出作为下一个映射的输入 一旦管道成功完成 您 通常 就不
  • Firebase Child 必须是非空字符串且不包含

    我正在使用 Firebase 在 Swift 中编写一个基本的消息应用程序 我已经完成了应用程序的大部分内容 但在 ChatViewController 中我收到此错误消息 Terminating app due to uncaught e
  • XSLT:删除多余的空白字符,保留节点

    所以我的问题是这样的 我有一个在很多地方使用的转换文档 并且通常处理许多小型格式转换 在一种特定情况下 我需要从结果中删除空格 输出看起来像这样 n 某事非常重要 带有上标注释1 n 我尝试过以下变体
  • SSDT 部署后脚本

    我想在部署后忽略部署后脚本 在 SSDT 中将特定于分支的部署后脚本部署到生产环境后 如何存档 删除该脚本 有没有最佳实践 我以前所做的就是创建日志表并存储所有执行的脚本 这是表结构 CREATE TABLE dbo publish scr
  • 流媒体音频 (YouTube)

    我正在写一个CLI音乐媒体平台 其中一项功能是您可以直接从 CLI 播放 YouTube 视频 我真的不知道该怎么做 但这听起来是最合理的 我将使用那些可以从 YouTube 下载音乐的网站 例如 http keepvid com 然后我直
  • 按下 UIbutton 后如何更改 UIbutton 标题?

    按下 btn1 后 我无法更改 UIButton btn2 的标题 当我使用 definition settitle Show Word forState UIControlStateNormal它改变了原来的btn1 这是供您审核的代码
  • 当我使用 ISNUMERIC() 时,为什么转换失败?

    SELECT CAST Revenue Size M AS float FROM Raw Data A WHERE ISNUMERIC Revenue Size M 1 我收到错误 将数据类型 nvarchar 转换为 float 时出错
  • Delphi 2009 的通用链表

    我正在查看 Generics Collections 并注意到没有链接列表 当然 它们制作起来很简单 但我觉得很奇怪没有一个 或者我只是错过了 与新的现代数据结构相比 链表是否已经过时了 或者是否需要通用的链表 有人知道其中一个吗 你知道吗
  • 带有 Flutter 和 Firestore 的 GridView

    我正在尝试从云 Firestore 记录制作一个简单的 GridView 我遵循了很多视频教程 但没有成功 这是代码 import package flutter material dart import package cloud fir
  • Camera.main空引用异常

    我是 C 和 Unity 的新手 我已经阅读了整个论坛 但我仍然陷入困境 这是我收到的错误 NullReferenceException 未将对象引用设置为对象的实例 ClickToMove Update 位于 Assets Scripts
  • 具有隔离范围版本的指令冲突

    在我的 Angular 应用程序中 我有一个指令 可编辑 它是在 Angular 版本 1 2 0 rc 2 上编写的并且运行良好 但是当我将框架升级到版本 1 2 13 时 指令损坏了 我检查了其他版本的功能 但很困惑 因为指令仅适用于三
  • 调用一个不带参数的函数,尽管它需要一个 [K&R-C]

    它是 K R C 代码如下 http v6shell org history if c 看main 方法 有这一行 if exp 但函数 exp 被声明为 exp s 所以需要一个论证 为什么这有效 你为什么要这样做 归根结底 这是 Uni
  • Swift 4 中的 UIImagePickerController 内存泄漏 Xcode 9

    在我的应用程序中 当我使用UIImagePickerController 我以为是我的应用程序的问题 但是在搜索解决方案时我找到了Apple的示例 并且我还发现该示例具有相同的内存泄漏 您可以在以下 URL 中找到该示例 https dev
  • 为什么此类型约束对于 List[Seq[AnyVal 或 String]] 失败

    我正在自学Scala并遇到了这个 继以下优秀答案之后Link 假设我有以下代码 object Example extends App val x Seq 1 2 3 val y Seq 1 2 3 class Or A B implicit
  • 在视图中运行时,sql 查询需要更多时间

    HI all 我有一个巨大的 sql 查询 当我将该查询放入存储的 Proc 中时 执行需要 5 秒 我将其作为查询运行 需要 4 5 秒 但当我在视图中运行它时 需要 5 分钟 请告知为什么它在视图中运行那么慢 sql查询如下 CREAT
  • 由 CamanJS 修改的 KineticJS 画布

    我正在尝试申请CamanJS过滤到使用 KineticJS 创建的画布 有用 Caman creator canvas function this lomo render 应用 CamanJS 过滤器后 我尝试使用画布执行某些操作 例如 拖