iDom

关注HTML5 UI框架 Mobile 图形渲染

使用CLion开发After Effects插件

最近需要给 Adobe After Effects 开发一个插件,用于导出矢量图形到二进制文件。这篇文章不会涉及具体的插件开发细节,详细的文档可以直接参考 Adobe 官方的插件开发页面:http://www.adobe.com/devnet/aftereffects.html, 啃完 SDK 里的那两份 Guide 文档基本就没什么问题了。总体来说,有两种方式来开 AE 的插件:C++ 或...

调用Skia内置位图编解码器的坑点

Skia内置了对大部分图片格式的编解码支持,几乎所有格式都可以解码,编码主要支持:JPEG,PNG,WEBP等。然而想直接调用Skia去编解码图片,还有一些注意事项,这方面几乎没搜索到多少相关文档,一开始走了不少弯路,通过研究源码才一点一点走通了,这里总结一下方便遇到同样问题的人。 先来看最常用的位图解码: bool decode(const void* bytes, size_...

TypeScript编译器增强版

在 Egret 引擎的命令行工具里一直都有一个自动排序的功能,能够自动分析出ts文件的依赖关系并给出正确的加载顺序,不用开发者手动去排列加载顺序。但是跟引擎工具耦合在一起了,没法独立使用。并且因为不是基于语法树分析的,准确率虽然还不错,但是没有达到100%完全可靠。正好最近TypeScript 2.0也发布了,借着升级引擎内置编译器的机会,我把这个功能从Egret 命令行里抽离出来做成了独立...

开启V8的JavaScript调试服务

V8的Javascript调试服务就是一个本地的Socket连接,嵌入V8的程序通过这个本地连接发送JSON字符串协议内容,与前端的调试工具进行交互。前端的调试工具通常是Chrome自带的开发者工具窗口,也有一些实现了V8调试协议的IDE,比如WebStorm,VSCode等。具体的调试协议内容可以参考这里:https://github.com/v8/v8/wiki/Debugging-Pr...

V8里又有一大波即将废弃的API

相关链接:https://groups.google.com/forum/#!topic/v8-users/gQVpp1HmbqM 这次API变动涉及的规模非常之庞大,绝大部分我们会使用到的接口都要更新一遍。这里简单解读一下变动的原因以及新接口的使用方法。首先来看下面这个示例: Local<Value> x = some_value; Local<String> ...

V8中JS与C++性能测试对比

测试方法 预先在JS端构造1000w组随机数据,每组数据四个数值,代表:x,y,width,height。然后将所有测试数据传入Native,确保JS和Native测试的数据是完全相同的。 var data = []; var i, t, x, y, width, height, index, start; for (i = 0; i < SIZE; i++) { x = ...

在Mac下使用libc++编译v8

Mac从10.7开始,系统默认的标准库改成了libc++,支持c++11标准,系统里也还有之前的libstdc++,但它是一个固定的旧版本,不支持c++11标准。虽然大的趋势是都使用libc++,但是还有不少老项目在使用libstdc++编译,导致跟其它库混合使用的时候可能会出现链接错误。chrome v8 就是这样,默认的编译配置是依赖libstdc++的而不是libc++,导致编译出来的...

使用代理同步谷歌项目时出现文件下载失败

在按官方文档使用 gclient sync 命令同步谷歌v8或Chromium项目时,最后总是会出现文件下载失败的报错: Failed to fetch file gs://chromium-gn/a68b194afb05d6a6357cf2e2464136ed7723c305 for src/buildtools/mac/gn. ... Error: Command 'download_...

Mac上直接解压C++静态库的问题

这段时间在研究C++的各种编译构建过程,学习了一下cmake,gyp/ninja这些自动化构建工具后,想着自己试下用纯命令行跑一遍编译流程。在试图把C++静态库编译为动态库的过程中遇到了棘手的问题,找了好久,最后发现是跟Mac平台相关的,这里记录一下,希望对遇到类似问题的童鞋有帮助。 C++的静态库(*.a文件)就是一个压缩包,把所有 *.o 文件打包在里面。所以我想尝试做的事很简单:就是...

显示列表与脏矩形渲染

这篇文章主要讲解显示列表与脏矩形渲染的基础概念,希望这部分内容对大家理解2D屏幕渲染过程会有帮助。:D 什么是显示列表? 在2D图形渲染中,显示列表是非常成熟的一种渲染组织方式,它封装了晦涩难以操作的底层绘图接口,提供给开发者一套非常简易且高效的API,来组织显示元素最终呈现到屏幕上。如下图,是一个简单的显示列表示例。 显示列表是一个树状的结构,列表中的每个节点叫做显示对象。显示对...

博客以及邮箱全面更换域名

最近偶然间发现.me的域名居然还有四位字母的可以注册,赶紧注册了一个:「idom.me 」。同事们纷纷表示这个域名比之前的「domlib.com」好多了,说之前的「xxxlib」透露着一股浓浓的屌丝码农气息(此处应有二胡声)。。。为了顺应广大人民群众的意见,含泪换掉了用了4年的「domlib.com」,一并连各种账号以及邮箱都更新到了「idom.me」。最新博客地址为:https://ido...

JS中常用类型格式化方法

由于JavaScript是弱类型的语言,项目写大了会非常难以把控,容易出各种问题。幸好有强类型的TypeScript可以很大程度上弥补这一缺陷,但TypeScript提供的强类型是编译阶段的,虽然绝大部分类型相关的问题在编译阶段都能被覆盖到,但对于小部分在运行时才会出错的错误还是无能为力。 例如以下几种常见的情况: 定义为number的属性,赋值的时候,如果赋值源没有定义强类型,这...

区分TS中的namespace和module

从TypeScript 0.9的beta版本就开始用它了,很有意思的地方它自身的编译器也是用TS写的,只要想起这个就会陷入深深的递归。。。这几天有时间去研究了一下TS的编译器项目,想看看官方是如何用TS组织一个nodejs命令行项目的。突然发现一直用了很久的module关键字全都变成了namespace,赶紧查了一下文档是这么说的: A note about terminology: It...

WebGL获取Context时的附加参数

最近在研究WebGL渲染,本想用模板缓冲实现类似Canvas2d上的clip()接口,绘制时裁切指定范围。可是发现无论怎么设置模板缓冲都没法正确显示。最后谷歌了一下才发现只设置gl.enable(gl.STENCIL_TEST)是不够的,在获取WebGL的context时还需要额外设置参数才能开启模板缓冲功能: var gl = canvas.getContext("webgl",{ste...

TypeScript进阶玩法

本来这篇文章准备写一下TypeScript的各种语法特性。发现N神的那篇博客《从 ActionScript3 到 TypeScript》好像又更新了,对TS的语法覆盖已经挺全的了。那这篇文章就接着N神的博客,写一下部分进阶部分的内容吧。另外,推荐从ActionScript3转到TypeScript上的童鞋,同时可以看一下这篇关于JavaScript的教程,对理解TypeScript也非常有帮...

Lark新特性解读(三)

更新: Lark项目的新特性现已全面合并到Egret Engine 2.5+中,不再独立维护,Lark GUI(Swan)扩展库,对应Egret Engine 2.5+中的EUI扩展库。 这是这系列文章的第三篇,主要介绍Lark GUI库的新特性。Lark GUI的API在swan这个模块名下,开发者可以通过swan.*方式访问到它们。在前两篇介绍的Lark核心库中,我们通过各种优化措施,...

Lark新特性解读(二)

更新: Lark项目的新特性现已全面合并到Egret Engine 2.5+中,不再独立维护,Lark GUI(Swan)扩展库,对应Egret Engine 2.5+中的EUI扩展库。 这篇文章接着上一篇《Lark新特性解读(一)》,继续解读Lark核心库新特性的后半部分。 屏幕适配模式 Lark里精简了初始化过程,设置屏幕适配模式,不再需要去修改加载器代码,只需在Lark Div节...

Lark新特性解读(一)

更新: Lark项目的新特性现已全面合并到Egret Engine 2.5+中,不再独立维护,Lark GUI(Swan)扩展库,对应Egret Engine 2.5+中的EUI扩展库。 什么是Lark? Github开源地址:https://github.com/egret-labs/Lark Lark 是一款基于 HTML5 技术构建跨平台移动 Web 应用,微站和富媒体广告营...

一个最精简的MVC系统

其实我蛮不理解MVC这种东西怎么会被写成一个框架的,它应该只是一篇项目结构的规范文档。没有具体考证,我所知道的最早引入MVC的也用的最好的应该是JAVA Web开发,Spring之类的框架。后来不知道谁开始把这套web架构推广到了游戏开发里。搜索一下MVC你会发现无数的框架出来:PureMVC,RobotLegs。。。我不知道具体到底有多少人在用这些框架,至少我所认识人和游戏项目,好像都没见...

AS3类在第一行报override错误解决方法

感慨一下,好久好久都没写过博客了。工作实在忙的没人性。。[流泪] 今天遇到一个问题,网上找了好久没搜索到答案。后来解决了,来这里记录一下。剧情经过是这样的:我们之前的多个项目,一直在用FB4.7开发,纯ActionScript+AIR项目,FB4.7自然默认给你用新的编译器。可是这个新的编译器非常坑。自己都有无数个bug。估计是刚刚开发出来还没来得及测试Flash团队就被Adobe裁掉了。...