怎么用纯JS实现轻量化图片编辑器

本篇内容主要讲解“怎么用纯JS实现轻量化图片编辑器”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用纯JS实现轻量化图片编辑器”吧!

成都网站建设哪家好,找成都创新互联!专注于网页设计、成都网站建设公司、微信开发、微信小程序开发、集团成都企业网站建设等服务项目。核心团队均拥有互联网行业多年经验,服务众多知名企业客户;涵盖的客户类型包括:成都隧道混凝土搅拌车等众多领域,积累了大量丰富的经验,同时也获得了客户的一致赞美!

    Optimizer 框架特点

    怎么用纯JS实现轻量化图片编辑器

    • 事件、画图、交互 全局管理

    • 支持注册自定义组件, 可自定义配置管理

    • 基于面向对象, 高度抽象代码

    • 简单易用, 能快速开发出各种效果

    Optimizer 框架使用

    启动

    首先需要场景管理器, 通过继承 GenScene 来创建场景, 场景里对于页面中的多个控制器进行管理

    class MainScene extends GenScene {
        constructor(optimizer) {
            super(optimizer)
        }
    }

    全局使用 instance 获取实例, 加载场景管理器, 最简单的 Optimizer 程序就启动了

    GenOptimizer.instance(function(o){
        let scene = MainScene.new(o)
        o.runWithScene(scene)
    })

    场景管理器 (Scene)

    页面事件Event

    ...
    
        text
    
    ...
    // 注册页面 class, 全局可用
    this.registerPageClass({
        "buttonArea": 'gen-auto-button-area',
        ...
    })
    // 注册全局事件       
    this.registerGlobalEvents([     
        {
            eventName: "click",
            // 事件绑定的元素区域
            className: sc.pageClass.buttonArea,
            // 在 所有 configToEvents 响应之 前 触发
            after: function(bindVar, target) {
                // bindVar: 绑定的变量
                // target: 事件触发的目标
            },        
            // 在 所有 configToEvents 响应之 后 触发
            before: function(bindVar, target) {
                // bindVar: 绑定的变量
                // target: 事件触发的目标
            },
            // 事件响应
            configToEvents: {
                // 自定义绑定的变量: 事件触发后的响应
                "config.arg1": function(target) {
                },
                "action.arg1": function(target) {
                },
                ...
            }
        },
        ...
    ])

    鼠标事件

    this.resgisterMouse(function(event, action) { 
        // event 是鼠标点击的事件
        // action 为鼠标点击的事件名称    
        if (action == 'mouseleave') {
            console.log('mouseleave canvas')
        } else if (action == 'up') {
            console.log('up canvas')
        } else if (action == 'down') {
            console.log('down canvas')
        } else if (action == 'move') {
            console.log('move canvas')
        }
    })

    键盘事件

    this.registerAction("Backspace", status => {
        // status 为 'down' 时, 表示按下, 为 'up' 时, 表示松开
        console.log("Backspace", status)
    })
    this.registerAction("s", status => {
        // status 为 'down' 时, 表示按下, 为 'up' 时, 表示松开
        console.log("s", status)
    })

    注册组件 Component

    class MyComponent extends GenComponent {
        constructor(control) {
            super(control.scene)
            this.control = control
        }
        ...
    }
    this.bindComponent('attribute', MyComponent.new(this))

    使用组件

    // 全局可使用组件
    let data = ...
    this.getComponent('attribute').buildWith(data)

    到此,相信大家对“怎么用纯JS实现轻量化图片编辑器”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!


    分享文章:怎么用纯JS实现轻量化图片编辑器
    当前URL:http://pwwzsj.com/article/pcegps.html

    其他资讯