自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 资源 (17)
  • 收藏
  • 关注

原创 用Flash Builder 4 beta建立连接BlazeDS远程端的Flex应用程序

配置服务器环境:<br /> 第一步,创建被Flex应用程序调用的Java类。本篇文章的应用程序使用了SimpleCustomerService类,这个类的方法被命名为getAllCustomers(),将在Flex应用程序中被调用: public class SimpleCustomerService <br />{ <br /> public ArrayList<SimpleCustomer> getAllCustomers()<br /> {<br /

2010-09-29 18:25:00 701

原创 在Flex Builder中添加BlazeDS

首先BlazeDS包含了两部分的内容,一个是客户端Flex,另一个是远程服务端Java。为了能同时编写Flex代码和Java代码。Flex Builder一般以插件形式安装,也就是要在Eclipse中装一个插件版的Flex Builder。而blazeds下载下来默认是blazeds.war的文件,至于为什么是war格式的,以下过程中会用到。创建一个Flex Project,在Application server type中选择J2EE,其他都默认,next在下来的这个界面中,关键点是Fle

2010-09-29 17:58:00 607

转载 八个我最常用的AS3开源类库

<br />来源:http://kevincao.com/2009/09/8-as3-lib/<br />GreenSock Tween Platform<br />GreenSock Tween是我最常用的一个功能强大的Tween类库,详细可以见我之前的介绍。但是要注意这个类库对商业项目并不是免费使用的,可以替代的选择有很多:GTween,Tweener等等。<br />Bulk Loader<br />Bulk Loader解决的是AS3中各种不同类型文件的加载问题,实现了对各种数据类型统一

2010-09-29 17:56:00 586

原创 BlazeDS研究--在FlashBuilder下搭建BlazeDS应用环境

BlazeDS简介:      BlazeDS 是一个基于服务器的 Java 远程控制 (remoting) 和 Web 消息传递 (messaging) 技术,以LGPL(Lesser GNU Public License)公共许可证书发布。它能够使得后端的 Java 应用程序和运行在浏览器上的 Adobe Flex 应用程序相互通信。在Java应用服务器上,它以servlet的形式存在, 因此可以在任何标准Java网络应用中运用它。<br />开发环境:      IDE:       ec

2010-09-29 17:53:00 535

原创 Flash社交游戏开发攻略连载(五)——反射的应用

<br />反射(Reflection),是众多面向对象语言都有的功能,不过我在论坛上常常看到有人不理解反射的用途,甚至有人说反射没有任何用处。今天我不讲反射究竟有多少可挖掘的地方,我们就着我们的游戏内容,来讲一下反射的现实应用,很多东西,不用你是不知道的。我们来到花园游戏,花园游戏中有许多的花,很多很多,估计有108种,并且一直在不断的增加。大家都知道,花肯定是flash做好的元件,因此我们要去库里面取,从库里面取也有很多种方法。最简单的就是在库里面元件中的属性点导出,然后在程序里就可以去实例化这

2010-09-29 17:34:00 929

原创 Flash社交游戏开发攻略连载(四)——基础控制流3

<br />前段时间比较忙,所以一直没有更新,不好意思。废话不多说,继续我们的控制流第三讲这次主要讲两个内容:1、完善插入对象以及移出对象功能    2、在合适的时候更新显示列表,并更新层深1插入以及移出对象我们设想,因为程序需要,我们要在场景中插入一个对象,但又因为其他因素,这个对象需要立刻被移出,而这之间的间隔非常小,小到在两帧之间,这个时候我们就没有必要将该对象真正插入到显示列表中(这种情况虽然不多,但是也有可能出现)。对应public var objectsToAdd:Array(待添加对象数组

2010-09-29 17:33:00 962

原创 Flash社交游戏开发攻略连载(三)——基础控制流2

<br />上一次讲了如何使用Enterframe做基础控制流的入口,我们使用了Timer配合,使得我们可以在每次进入下一帧的时候获得两帧之间的时间。现在我们讲讲如何通过tickBase方法进而去控制程序中需要控制的每一个类。这次我们用《梦想花园》中的花的成长控制作为例子。如果每一朵花都需要自动的生长,我们应该怎么做呢?没错,我们要使用tick,在每次进入下一帧的时候调用tick函数,传入时间间隔timeSpan,累加这些时间,并且判断花朵是否应该长大,从而更换花朵的状态。为此,我们写了一个新的类Bas

2010-09-29 17:32:00 602

原创 Flash社交游戏开发攻略连载(二)——基础控制流1

本来有很多想说的,可一旦真的写了,突然发现无从下手,不过这个感觉就和我第一次开发游戏一样,因此,我就从新手最容易碰到的问题上来说吧。<br /><br />很多游戏开发新手在这个问题上都会很迷茫,究竟如何去控制整个FLASH游戏?比如,我们要做一个横版飞行游戏,那么我们会设想敌机在空中飞,那么这个飞行肯定是有速度的,新手一般会想到使用Timer类来实现每隔几秒就让某个元件按照一个数学函数来移动一下位置。这的确是最直观的方法。不过这么做有两个坏处:1 每个Timer如果都是独立的,那么则无法从全局上控制流程,

2010-09-29 17:30:00 704

原创 Flash社交游戏开发攻略连载(一)

<br />如今SocailGame火爆的如日中天,AS也是热得滚烫,农场、餐厅以及花园类游戏的火爆使得很多人都打起了开发Flash游戏的算盘。作为公司项目主管,我就负责了两个项目的开发,一个是餐厅,另一个是花园。这里是游戏的链接(非广告,大家可以只看截图不点连接)接下来我会以这两个游戏开发的过程为范例,给大家分享一些在游戏开发方面的经验以及一些比较不错的技术解决方案花园游戏:餐厅游戏:<br /><br />

2010-09-29 17:29:00 764

原创 Flash Socket 底层接受数据的初级处理(as3.0)

<br />用flash去开发应用,,免不了网络通讯,特别是网络游戏,需要用到即使通讯。as3提供了两个支持即时通讯的类:XMLSocket和Socket,前者其实是只支持发送字符串,而后者就强大多了,支持发送字节,相对来说比较底层,而这也给我们更多的发挥空间。其实,flash socket的网络底层接受数据,就以与C++服务器通讯为例子,C++服务器一般会发一段一段数据过来,每段数据都是由一定结构组成的,一般是消息头和消息头,然后再逐步分层解析。在这里,我只说接受网络底层的处理,一般一

2010-09-29 16:15:00 1131

转载 [Socket+AMF3]Socket安全策略问题的解决

<br /> Flash Player安全策略问题和端口问题对于Socket(XMLSocket)的web开发一直都是很头痛的问题,经过昨天一天的研究,终于找到了解决方案了,我把解决方法在这里作一下简述!<br />    其实Flash帮助文件也做了说明:http://help.adobe.com/zh_CN/AS3LCR/Flash_10.0/flash/system/Security.html#loadPolicyFile()。就在调用socket.connect方式之间先进行:Securit

2010-09-29 16:10:00 656

转载 BaseSocket类-可以提升Socket数据传输效率

<br />[AS3]BaseSocket类-可以提升Socket数据传输效率<br /><br />需要Flash Player 9.0或更高版本的支持<br /><br />原理就是结合AMF3和ByteArray的特性对原来数据进行压缩后再传输,这样就可以大大提高数据传输效率。<br /><br />我现在把客户端方法进行优化,现在写成一个BaseSocket类来方便调用。<br /><br /><br /><br />BaseSocket类 <br /><br />view plai

2010-09-29 16:07:00 873

转载 给合Flash的Socket和AMF3来尝试开发web游戏引擎

今天尝试用Socket和AMF3来开发web游戏引擎,用Flash的好处就是因为插件普及率高,无需用户另行安装,所以用Flash来开发丰富的Web游戏成为很好的选择。服务端仍然采用apache mina+AMF3来写Socket服务程序。演示效果图:客户端代码:游戏角色类view plaincopy to clipboardprint?/

2010-09-29 16:04:00 1015

原创 如何获取AMF3对象类名

<br />对不熟悉AMF3的人来说,这名词有点玄乎,AMF3不过两个函数而已<br /><br />//编码(把对象序列化成AMF3)<br />1 bateArray.writeObject(obj:Object):void<br /><br />//解码 (反序列化,获取对象)<br />2 bateArray.readObject():Object<br /><br />如果需要序列化的对象就是一个哈希map(key-value的集合),那么一切正常<br />但是如果你要序

2010-09-29 14:34:00 657

原创 Flex自定义鼠标右键

这里写了一个简单的自定义鼠标右键,代码不难,请看注释 其它的请大家参看官方文档  ContextMenu类 ContextMenuItem类  源码:<?xml version="1.0" encoding="utf-8"?><br /><mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical"  verticalAlign="middle" horizontalAlign="center" creationCo

2010-09-27 22:03:00 1218

原创 关于回调函数,事件模型

首先,我也是经历了“认为回调函数比事件模型好”,“认为事件模型比回调函数好”,这两个阶段都走过才来说这样的话的。其实“回调函数”和“事件模型”可以作为架构方式的两个标志。这里,我就单单说说它们的优缺点吧。 回调函数优点:1.没有内存泄漏问题2.书写简单,一个方法的回调函数数量和意义是固定的,不需要刻意查找需要的回调函数名称3.你无法对同一个内容加上两个回调函数,可以避免重复添加的问题4.回调函数的参数列表比较灵活,可以直接写,而且是固定的,写错了执行时会报错,方便排错5.回调函数以及它的参数是固定的,多了少

2010-09-27 21:54:00 689

原创 AS中使用回调函数

<br />当你想通过一个类来加载XML或者图片等,想让他返回一个XML或者Bitmap,你不能在类的构造函数直接return,因为他可能return的时候还没有load完,往往会返回一个空的,这时候你就可以尝试使用回调函数了,或者使用DispatchEvent,如果是一个小程序的话不妨试下回调函数,简单实用,代码如下: publicclass LoadXML<br />{<br />privatevar fBack:Function;<br /> <br />publ

2010-09-27 20:44:00 941

原创 flash中设定焦点

flash中设定焦点,其实很简单,有现成的方法:stage.focus = 要设定焦点的对象

2010-09-26 11:51:00 585

原创 Flash AS3 正则表达式

<br />1.  验证中文字符:<br />     //初始化正则表达式类<br />    var pattern:RegExp=/[/u4e00-/u9fa5]/;<br />    //需要验证的字符串<br />   var nihao:String="你好";<br />   var hello:String="hello";<br />   //输出结果<br />   trace("验证'你好'字符串的结果:"+pattern.test(nihao));<br />   trace("验证

2010-09-26 11:23:00 908

原创 Tween缓冲心得

<br />Tween缓冲<br />Tween缓冲大家应该都不陌生,说白了就是从一起始位置逐渐移动到目标位置的过程,这个过程可以是加速移动,也可以是减速移动,这些不同的缓动方式就是Tween的各种ease。<br />Tween算法<br />概念知道了,了解一下Tween的算法对我们更好的使用Tween或者编写自己的Tween都是很有帮助的。<br />在缓动过程中,随着时间的推移,对象从起始位置开始逐渐向目标位置移动,我们假设移动的距离为disX,并将其作为y轴,时间t作为x轴,这样可以轻

2010-09-21 10:34:00 866

原创 总结PureMVC中Mediator,Command,Proxy的职责

我对PureMVC的喜爱可以说到了偏执的地步...我知道这样不好。当我第一次接触它时,我就被它简洁轻量的架构所迷住,因为十分符合我个人的编码习惯了,一切从简,于是乎,之后无论公司或个人的项目,都用到了PureMVC,我知道这样也不好,但我就是偏执!说的有点跑题了..归入正题,我们知道,PureMVC由3个单例模式类组成,分别是Model,View和Controller,可以说这3层就是整个PureMVC的核心。那么这3层在框架中各自扮演着什么样的角色和其职责呢?下面总结一下。(住:示例代码片

2010-09-21 10:17:00 2677 3

原创 简单BitmapData粒子的实现

<br />发了两个“说说BitmapData”帖子之后,一些同学希望能提供源码。这次我提供了另外一个例子的源码,代码能很清晰的体现BitmapData粒子的基本做法。至于如何从这个基本结构发展成这样那样的效果,大家可以自己琢磨下。这里是演示,四万个粒子的自由落体。<br />http://www.ryan-liu.com/demo/particle/pixel_animation.html<br /><br />源码中主要分三个部分,BitmapData操作,粒子运算,和之前还没提

2010-09-21 10:05:00 599

转载 【游戏基础】内部边界卷屏

什么是卷屏对大多数的动作游戏或冒险游戏来说,游戏场景通常都会很大,而无法在游戏舞台上完全显示出来,所以如果只是靠游戏人物在舞台中移动,那么它的活动范围会被局限在狭小的舞台中。那么怎么解决这个问题呢?对,移动游戏场景!俗话说的好,树欲静而风不止,运动是相对的,背景的移动会使静止的游戏人物产生移动的效果,而场景的移动是不受限制的,我们的视角只能看到舞台大小的场景,随着场景的任意移动,游戏人物也就可以移动到场景的任意位置了,这就是我们所说的卷屏!下面我们来看一下,AS3中卷屏是怎么实现的吧!通

2010-09-21 09:38:00 788

原创 Levenshtein Distance(LD)-计算两字符串相似度算法

    两字符串相似度计算方法有好多,现对基于编距的算法的相似度计算自己总结下。    简单介绍下Levenshtein Distance(LD):LD 可能衡量两字符串的相似性。它们的距离就是一个字符串转换成那一个字符串过程中的添加、删除、修改数值。    举例:如果str1="test",str2="test",那么LD(str1,str2) = 0。没有经过转换。如果str1="test",str2="tent",那么LD(str1,str2) = 1。str1的"s"转换"n",转换了一个字符,所以

2010-09-20 10:16:00 516

原创 Function中的apply函数的应用

<br />最近在研究PureMVC源码的过程中发现Function顶级包中的apply函数蛮有意思的,通过这个函数,可以及时的调用不同类中的同一个函数,这是该函数的格式:apply(thisArg:*, argArray:*):*<br /><br />指定要在 ActionScript 调用的任何函数内使用的 thisObject 的值。此方法还指定要传递给任何被调用函数的参数。由于 apply() 是 Function 类的方法,所以它也是 ActionScript 中每个 Funct

2010-09-12 13:06:00 1048

原创 去掉xml中的命名空间

有的时候xml中会带有命名空间使操作xml不方便,这时可以使用下面的方法xml类自带的函数去掉:removeNamespace(ns:Namespace):XML删除该对象及其所有子级的给定命名空间。如果命名空间由该对象的限定名称或该对象属性的限定名称引用,则 removeNamespaces() 方法不会删除该命名空间。例子:var xml:XML = xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns="ht

2010-09-09 15:42:00 3546

转载 Red5源代码分析 - 关键类及其初始化过程

<br /><br />原文地址:http://semi-sleep.javaeye.com/blog/348768<br />Red5如何响应rmpt的请求,中间涉及哪些关键类?<br />响应请求的流程如下:<br />1.Red5在启动时会调用RTMPMinaTransport的start()方法,该方法会开启rmtp的socket监听端口(默认是1935),然后使用mina(apache的io操作类库)的api将RTMPMinaIoHandler绑定到该端口。<br />2.RTMPMinaIoHa

2010-09-07 10:18:00 464

转载 Red5源代码分析 - 关键类及其初始化过程

<br /><br />原文地址:http://semi-sleep.javaeye.com/blog/348768<br />Red5如何响应rmpt的请求,中间涉及哪些关键类?<br />响应请求的流程如下:<br />1.Red5在启动时会调用RTMPMinaTransport的start()方法,该方法会开启rmtp的socket监听端口(默认是1935),然后使用mina(apache的io操作类库)的api将RTMPMinaIoHandler绑定到该端口。<br />2.RTMPMinaIoHa

2010-09-07 10:17:00 447

转载 Red5源代码分析 - 关键类及其初始化过程

<br /><br />原文地址:http://semi-sleep.javaeye.com/blog/348768<br />Red5如何响应rmpt的请求,中间涉及哪些关键类?<br />响应请求的流程如下:<br />1.Red5在启动时会调用RTMPMinaTransport的start()方法,该方法会开启rmtp的socket监听端口(默认是1935),然后使用mina(apache的io操作类库)的api将RTMPMinaIoHandler绑定到该端口。<br />2.RTMPMinaIoHa

2010-09-07 10:16:00 420

转载 Red5源代码分析 - 关键类及其初始化过程

<br /><br />原文地址:http://semi-sleep.javaeye.com/blog/348768<br />Red5如何响应rmpt的请求,中间涉及哪些关键类?<br />响应请求的流程如下:<br />1.Red5在启动时会调用RTMPMinaTransport的start()方法,该方法会开启rmtp的socket监听端口(默认是1935),然后使用mina(apache的io操作类库)的api将RTMPMinaIoHandler绑定到该端口。<br />2.RTMPMinaIoHa

2010-09-07 10:16:00 392

原创 关于私有继承的一个小例子

<br />私有变量在父类函数中被调用,在子类中该变量仍然被调用,但是在子类中不能被直接引用,见下面的例子:<br />类A:<br />package com.custom{ public class A { private var m:int = 10; public var showNum:int = 0; public function A() { } public function show():void {

2010-09-07 09:59:00 551

转载 有关封装和信息隐藏的误区

<br /><br />上次介绍Python的面对对象特性 ,其中扯到了封装(Encapsulation)等概念。当时为了不跑题,没有深入聊这些概念。考虑到很多开发人员对这些概念,经常混淆不清。今天再专门来说一下。<br /><br />  ★封装 <br />  ◇什么是封装?<br />  从字面意思来看,封装就是把一些相关的 东西打包成一坨(看到“坨”这个量词,不要想歪了)。“封装”最广为人知的例子,就是在面向对象编程(以下简称OOP)里面,把数据和针对该数据的操作,统一到一个class里。<br /

2010-09-07 09:48:00 441

转载 AS3中的原型继承介绍

<br />作者:闪刀浪子   www.iflashigame.com   http://hi.baidu.com/mr_ziqiang<br /><br />原型继承是早起AS版本所使用的集成方式,在AS3中允许两种方式的集成——类继承和原型继承<br /><br />原型继承的基本原理:<br />每种类都有一个关联的原型对象,而原型对象的属性由该类的所有实例共享。 在创建一个类实例时,它具有对其类的原型对象的引用,这将作为实例及与其关联的类原型对象间的链接。 运行时,如果在类实例中找不到某属性,则会检

2010-09-07 09:23:00 442

转载 巧用原型继承解决游戏开发中的鼠标问题

作者:闪刀浪子  www.iflashigame.com  http://hi.baidu.com/mr_ziqiang转载请注明出处今天在做游戏的时候游戏中有一个简单需求:有一个人物,鼠标移到上面的时候需要显示手型指针。if(MouseEvent.MOUSE_OVER)    Mouse.cursor="button";但是玩家点击了攻击键之后,需要隐藏鼠标,用一个瞄准镜的MC来替代鼠标。此时当这个瞄准镜移动到人物身上的时候无需显示手型指针了。Mouse.hide();myMouse.visible=tr

2010-09-07 09:21:00 399

原创 as3对象池研究

<br /><br />为什么使用对象池?<br /> ok,我们先来看一个例子:假设游戏当中,玩家按下鼠标,那么游戏场景中出现一个美女A,代码是var A:美女A=new 美女A();addChild(A);  放开鼠标美女被清除,<br />代码是:A.dispose();A=null;如果某个玩家不停地点击鼠标,那么我们的代码将不停的NEW 美女A()而NEW 美女A()其实是很费时消耗系统性能这是问题就来了,假设NEW 美女A()消耗了2KB内存,玩家疯狂点一千次,那么我们的美女类就不断地创建,清除

2010-09-07 00:37:00 1205

原创 屏幕掉TextField右键的剪切,复制菜单

<br />其实很简单,只需要将TextField的mouseEnabled 属性置为false就可以了:<br />            var textField:TextField = new TextField();<br />                textField.mouseEnabled = false;

2010-09-02 10:07:00 620

原创 一个flash and math 的网站

<br />http://www.flashandmath.com/

2010-09-01 09:33:00 484

最全C&C++程序员面试宝典程序员面试宝典(C/C++版,pdf扫描)

包括面试技巧,数据结构,设计模式,数据库,操作系统,网络等概述,可在面试前巩固一下基础

2018-12-18

Cocos2d-x实战 Lua卷.pdf

Cocos2d-x实战 Lua卷.pdf 版 介绍Cocos2d-x Lua游戏编程和开发技术的书籍,介绍了使用Cocos2dx Lua中核心类、瓦片地图、物理引擎、音乐音效、数据持久化、网络通信、性能优化、多平台移植、程序代码管理、两大应用商店发布产品。全书分为六篇: 基础篇、进阶篇、数据与网络篇、优化篇、跨平台移植篇和实战篇,共23章。基础篇包括第1~8章,分别是Cocos2d-x Lua介绍、环境搭建、标签、菜单、精灵、场景、层、动作、特效、动画和用户事件。进阶篇包括第9~12章,分别是游戏音乐与音效、粒子系统、瓦片地图和 物理引擎。数据与网络篇包括第13~15章,分别是数据持久化、基于HTTP的网络通信、Node.js与WebSocket网络通信。优化篇为第16 章,主要介绍性能优化。跨平台移植篇包括第17章和第18章,分别是移植到Android平台和移植到iOS平台。实战篇包括第19~23章,分别是使用 Git管理程序代码、项目实战——迷失航线手机游戏、为迷失航线游戏添加广告、发布放到Google play应用商店和发布放到苹果App Store。

2018-09-11

交互式计算机图形学 基于WEBGL的自顶向下方法 7th 源代码

该资源是《交互式计算机图形学 基于OpenGL着色器的自顶向下方法(第7版) 》里面的代码

2018-09-02

计算机图形学 基于WebGL的自顶向下方法 第7版

全部章节的 另一本webGL学习资料,内容为全部内容。自OpenGL之后的另一本计算机图形学资料,适合Web端开发三维的同学

2018-08-31

我所理解的Cocos2d-x ,秦春林编著 ,P4381.pdf

《我所理解的Cocos2d-x》针对最新的 Cocos2d-x 3.x版本,介绍了Coco2d-x游戏引擎的基本架构、渲染机制,以及各个子模块的功能和原理,并结合OpenGL ES图形渲染管线,深入探讨了游戏开发中涉及的相关图形学的知识,内容包括:Cocos2d-x的基本架构及渲染机制、纹理相关的知识、OpenGL ES 2.0渲染管线、计算机字体的绘制、多分辨率支持、事件分发、碰撞与物理引擎、游戏对象模型架构、Genius-x开源框架、脚本在游戏引擎中的架构等。

2018-08-29

微信跳一跳源码

微信小游戏跳一跳源码,喜欢的童鞋可以拿走,共同学习

2018-01-21

3D数学基础:图形与游戏开发高清带目录中文版.pdf

邓恩 (作者), 帕贝利 (作者), 史银雪 (译者), 陈洪 (译者), 王荣静 (译者) 《3D数学基础:图形与游戏开发》专业培训机构指定教学参考书,多家游戏开发企业共同推荐,游戏业界权威,探索游戏开发背后的核心秘密。《3D数学基础:图形与游戏开发》主要介绍了基本的3D数学概念,这对电脑游戏开发人员和编程人员来说尤为重要。作者详尽地讨论了数学理论,并在必要时提供几何说明,帮助读者形成直观的3D感。书中还提供了将理论应用于实践的C++类,并且在每章结尾处提供练习。《3D数学基础:图形与游戏开发》介绍了基础概念,如向量、坐标空间、矩阵、变换、欧拉角、齐次坐标空间、几何图元、相交性检测和三角网格。

2017-07-03

xcode配置iOS10.3开发包

2017-03-29

WebGL编程指南

基本信息 原书名:WebGL Programming Guide: Interactive 3D Graphics Programming with WebGL (OpenGL) 原出版社: Addison-Wesley Professional 作者: (美)Kouichi Matsuda Rodger Lea(松田浩一,罗杰.李) 译者: 谢光磊 出版社:电子工业出版社 ISBN:9787121229428 上架时间:2014-6-11 出版日期:2014 年6月 开本:16开 页码:470 版次:1-1 --------------------- 目录 《WebGL编程指南》 第1 章 WebGL 概述 1 WebGL 的优势 3 使用文本编辑器开发三维应用 3 轻松发布三维图形程序 4 充分利用浏览器的功能 5 学习和使用WebGL 很简单 5 WebGL 的起源 5 WebGL 程序的结构 6 总结 7 第2 章 WebGL 入门 9 Canvas 是什么? 10 使用[canvas] 标签 11 DrawRectangle.js 13 最短的WebGL 程序:清空绘图区 16 HTML 文件(HelloCanvas.html) 16 JavaScript 程序(HelloCanvas.js) 17 用示例程序做实验 22 绘制一个点(版本1) 22 HelloPoint1.html 24 HelloPoint1.js 24 着色器是什么? 25 使用着色器的WebGL 程序的结构 27 初始化着色器 29 顶点着色器 31 片元着色器 33 绘制操作 34 WebGL 坐标系统 35 用示例程序做实验 37 绘制一个点(版本2) 38 使用attribute 变量 38 示例程序(HelloPoint2.js) 39 获取attribute 变量的存储位置 41 向attribute 变量赋值 42 gl.vertexAttrib3f() 的同族函数 44 用示例程序做实验 45 通过鼠标点击绘点 46 示例程序(ClickedPoints.js) 47 注册事件响应函数 48 响应鼠标点击事件 50 用示例程序做实验 53 改变点的颜色 55 示例程序(ColoredPoints.js) 56 uniform 变量 58 获取uniform 变量的存储地址 59 向uniform 变量赋值 60 gl.uniform4f() 的同族函数 61 总结 62 第3 章 绘制和变换三角形 63 绘制多个点 64 示例程序(MultiPoint.js) 66 使用缓冲区对象 69 创建缓冲区对象(gl.createBuffer()) 70 绑定缓冲区(gl.bindBuffer()) 71 向缓冲区对象中写入数据(gl.bufferData()) 72 类型化数组 74 将缓冲区对象分配给attribute 变量(gl.vertexAttribPointer()) 75 开启attribute 变量(gl.enableVertexAttribArray()) 77 gl.drawArrays() 的第2 个和第3 个参数 78 用示例程序做实验 79 Hello Triangle 80 示例程序(HelloTriangle.js) 80 基本图形 82 用示例程序做实验 83 Hello Rectangle(HelloQuad) 84 用示例程序做实验 85 移动、旋转和缩放 86 平移 87 示例程序(TranslatedTriangle.js) 88 旋转 91 示例程序(RotatedTriangle.js) 93 变换矩阵:旋转 97 变换矩阵:平移 100 4×4 的旋转矩阵 101 示例程序(RotatedTriangle_Matrix.js) 102 平移:相同的策略 105 变换矩阵:缩放 106 总结 108 第4 章 高级变换与动画基础 109 平移,然后旋转 109 矩阵变换库:cuon-matrix.js 110 示例程序(RotatedTriangle_Matrix4.js) 111 复合变换 113 示例程序(RotatedTranslatedTriangle.js) 115 用示例程序做实验 117 动画 118 动画基础 119 示例程序(RotatingTriangle.js) 119 反复调用绘制函数(tick()) 123 按照指定的旋转角度绘制三角形(draw()) 123 请求再次被调用(requestAnimationFrame()) 125 更新旋转角(animate()) .126 用示例程序做实验 128 总结 130 第5 章 颜色与纹理 131 将非坐标数据传入顶点着色器 131 示例程序(MultiAttributeSize.js) 133 创建多个缓冲区对象 134 gl.vertexAttribPointer() 的步进和偏移参数 135 示例程序(MultiAttributeSize_Interleaved.js) 136 修改颜色(varying 变量) 140 示例程序(MultiAttributeColor.js) 141 用示例程序做实验 144 彩色三角形(ColoredTriangle.js) 145 几何形状的装配和光栅化 145 调用片元着色器 149 用示例程序做实验 149 varying 变量的作用和内插过程 151 在矩形表面贴上图像 153 纹理坐标 156 将纹理图像粘贴到几何图形上 156 示例程序(TexturedQuad.js) 157 设置纹理坐标(initVertexBuffers()) 160 配置和加载纹理(initTextures()) 160 为WebGL 配置纹理(loadTexture()) 164 图像Y 轴反转 164 激活纹理单元(gl.activeTexture()) 165 绑定纹理对象(gl.bindTexture()) 166 配置纹理对象的参数(gl.texParameteri()) 168 将纹理图像分配给纹理对象(gl.texImage2D()) 171 将纹理单元传递给片元着色器(gl.uniform1i()) 173 从顶点着色器向片元着色器传输纹理坐标 174 在片元着色器中获取纹理像素颜色(texture2D()) 174 用示例程序做试验 175 使用多幅纹理 177 示例程序(MultiTexture.js) 178 总结 183 第6 章 OpenGL ES 着色器语言(GLSL ES) 185 回顾:基本着色器代码 186 GLSL ES 概述 186 你好,着色器! 187 基础 187 执行次序 187 注释 187 数据值类型(数值和布尔值) 188 变量 188 GLSL ES 是强类型语言 189 基本类型 189 赋值和类型转换 190 运算符 191 矢量和矩阵 192 赋值和构造 193 访问元素 195 运算符 197 结构体 200 赋值和构造 200 访问成员 200 运算符 201 数组 201 取样器(纹理) 202 运算符优先级 203 程序流程控制:分支和循环 203 if 语句和if-else 语句 203 for 语句 204 continue、break 和discard 语句 205 函数 205 规范声明 207 参数限定词 207 内置函数 208 全局变量和局部变量 209 存储限定字 209 const 变量 209 Attribute 变量 210 uniform 变量 211 varying 变量 211 精度限定字 211 预处理指令 213 总结 215 第7 章 进入三维世界 217 立方体由三角形构成 217 视点和视线 218 视点、观察目标点和上方向 219 示例程序(LookAtTriangles.js) 221 LookAtTriangles.js 与RotatedTriangle_Matrix4.js 224 从指定视点观察旋转后的三角形 225 示例程序(LookAtRotatedTriangles.js) 227 用示例程序做实验 228 利用键盘改变视点 230 示例程序(LookAtTrianglesWithKeys.js) 230 独缺一角 232 可视范围(正射类型) 233 可视空间 234 定义盒状可视空间 235 示例程序(OrthoView.html) 236 示例程序(OrthoView.js) 237 JavaScript 修改HTML 元素 239 顶点着色器的执行流程 239 修改near 和far 值 241 补上缺掉的角(LookAtTrianglesWithKeys_ViewVolume.js) 243 用示例程序做实验 245 可视空间(透视投影) 246 定义透视投影可视空间 247 示例程序(perspectiveview.js) 249 投影矩阵的作用 251 共冶一炉(模型矩阵、视图矩阵和投影矩阵) 252 示例程序(PerspectiveView_mvp.js) 254 用示例程序做实验 257 正确处理对象的前后关系 258 隐藏面消除 260 示例程序(DepthBuffer.js) 262 深度冲突 263 立方体 266 通过顶点索引绘制物体 268 示例程序(HelloCube.js) 268 向缓冲区中写入顶点的坐标、颜色与索引 271 为立方体的每个表面指定颜色 274 示例程序(ColoredCube.js) 275 用示例程序做实验 277 总结 279 第8 章 光照 281 光照原理 281 光源类型 283 反射类型 284 平行光下的漫反射 286 根据光线和表面的方向计算入射角 287 法线:表面的朝向 288 示例程序(LightedCube.js) 291 环境光下的漫反射 296 示例程序(LightedCube_ambient.js) 298 运动物体的光照效果 299 魔法矩阵:逆转置矩阵 301 示例程序(LightedTranslatedRotatedCube.js) 302 点光源光 304 示例程序(PointLightedCube.js) 305 更逼真:逐片元光照 308 示例程序(PointLightedCube_perFragment.js) 309 总结 310 第9 章 层次模型 311 多个简单模型组成的复杂模型 311 层次结构模型 313 单关节模型 314 示例程序(JointMode.js) 315 绘制层次模型(draw()) 319 多节点模型 321 示例程序(MultiJointModel.js) 323 绘制部件(drawBox()) 326 绘制部件(drawSegments()) 327 着色器和着色器程序对象:initShaders() 函数的作用 332 创建着色器对象(gl.createShader()) 333 指定着色器对象的代码(gl.shaderSource()) 334 编译着色器(gl.compileShader()) 334 创建程序对象(gl.createProgram()) 336 为程序对象分配着色器对象(gl.attachShader()) 337 连接程序对象(gl.linkProgram()) 337 告知WebGL 系统所使用的程序对象(gl.useProgram()) 339 initShaders() 函数的内部流程 339 总结 342 第10 章 高级技术 343 用鼠标控制物体旋转 343 如何实现物体旋转 344 示例程序(RotateObject.js) 344 选中物体 347 如何实现选中物体 347 示例程序(PickObject.js) 348 选中一个表面 351 示例程序(PickFace.js) 352 HUD(平视显示器) 355 如何实现HUD 355 示例程序(HUD.html) 356 示例程序(HUD.js) 357 在网页上方显示三维物体 359 雾化(大气效果) 359 如何实现雾化 360 示例程序(Fog.js) 361 使用w 分量(Fog_w.js) 363 绘制圆形的点 364 如何实现圆形的点 364 示例程序(RoundedPoint.js) 366 α 混合 367 如何实现α 混合 367 示例程序(LookAtBlendedTriangles.js) 369 混合函数 369 半透明的三维物体(BlendedCube.js) 371 透明与不透明物体共存 372 切换着色器 373 如何实现切换着色器 374 示例程序(ProgramObject.js) 375 渲染到纹理 379 帧缓冲区对象和渲染缓冲区对象 380 如何实现渲染到纹理 381 示例程序(FramebufferObject.js) 382 创建帧缓冲区对象(gl.createFramebuffer()) 385 创建纹理对象并设置其尺寸和参数 385 创建渲染缓冲区对象(gl.createRenderbuffer()) 386 绑定渲染缓冲区并设置其尺寸(gl.bindRenderbuffer(), gl.renderbufferStorage()) 386 将纹理对象关联到帧缓冲区对象(gl.bindFramebuffer(), gl.framebufferTexture2D()) 388 将渲染缓冲区对象关联到帧缓冲区对象(gl.framebufferRenderbuffer()) 389 检查帧缓冲区的配置(gl.checkFramebufferStatus()) 390 在帧缓冲区进行绘图 390 绘制阴影 392 如何实现阴影 392 示例程序(Shadow.js) 393 提高精度 399 示例程序(Shadow_highp.js) 400 加载三维模型 401 OBJ 文件格式 404 MTL 文件格式 405 示例程序(OBJViewer.js) 406 自定义类型对象 409 示例程序(OBJViewer.js 解析数据部分) 411 响应上下文丢失 418 如何响应上下文丢失 419 示例程序(RotatingTriangle_contextLost.js) 420 总结 422 附录A WebGL 中无须交换缓冲区 423 附录B GLSL ES 1.0 内置函数 427 角度和三角函数 428 指数函数 429 通用函数 430 几何函数 433 矩阵函数 434 矢量函数 435 纹理查询函数 436 附录C 投影矩阵 437 正射投影矩阵 437 透视投影矩阵 437 附录D WebGL/OpenGL :左手还是右手坐标系? 439 示例程序(CoordinateSystem.js) 440 隐藏面消除和裁剪坐标系统 443 裁剪坐标系和可视空间 444 什么是对的? 446 总结 448 附录E 逆转置矩阵 449 附录F 从文件中加载着色器 453 附录G 世界坐标系和本地坐标系 . 457 本地坐标系 458 世界坐标系 459 变换与坐标系 461 附录H WebGL 的浏览器设置 . 463

2016-02-20

用ActionScript开发高级可视化组件

用ActionScript开发高级可视化组件 详细介绍 我们可以用ActionScript开发在Adobe® Flex™应用中使用的高级可视化组件,这个主题,包 括以下方面的内容: 1. 关于创建高级组件 2. 组件的实现 3. 使组件具备可访问性 4. 为组件增加版本号 5. 组件设计的最佳实践 6. 例子:创建一个复合组件 7. 疑难问题 简单组件一般都是现存Flex 组件的子类,它们通过设置skpins 或styles 属性来修改父组 件的外观,或者添加一些新的功能。比如,为Button 控件增加一个新的事件类型,或者更改 DataGrid 控件缺省的styles 和skins。更多信息参见,Simple Visual Components in ActionScript. 在高级组件中,通常会执行以下动作:

2009-10-05

CSS.Mastery.精通CSS(中文版).part02

刚才搜索了一下,论坛里只有英文版的,恰好前几天下载到中文版的,虽然有点大,还是上传和大家分享了。 个人想法:虽然翻译得不怎么样,但结合着英文版,还是挺不错的。如果英语水平还行,对照着金山词霸看,是不错的选择。

2008-09-12

拉格朗日(Lagrange)插值实验

新编的,计算方法用,拉格朗日(Lagrange)插值实验课上用到的

2007-11-30

计算方法中的牛顿插值

可以看看,不是很难,蛮好实现的,在计算方法中使用的

2007-11-30

操作系统中的分页存储

自己编的分页存储 操作系统,实现了分页系统

2007-11-30

设备管理程序 操作系统中的

自己做的操作系统中的设备管理程序,很久了。。。

2007-11-30

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除