《点睛:ActionScript3.0游戏互动编程》——导读

前言
追溯至1946年,计算机在第三次工业革命的推动下得以诞生并发展,从此地球上多了一类人,他们的世界很简单,每天不是和0接触,就是跟1来往。他们低调做人、高调做事,他们务实为民、不求名利,他们就是可爱可人、可歌可泣的IT工作者——程序员!
都说程序员不善表达,没错,离开0和1,程序员就几乎不会说话了。与此同时,程序员也恰恰是最善于表达的人,他们只用0和1这两个数字,就可以准确无误地将用户的需求传达给电脑并使其正确运行,其语言之简练,其算法之精准,其逻辑之严谨,其结果之准确,试问除了程序员,还有谁可以做得到?因此,与其说程序员不善表达,还不如说是外行人没读懂程序员的世界。

对于程序员来说,255是个神圣的数字,是一个8位二进制字节可以表示的最大整数,它代表了饱满,象征着完美,是程序员至高无上的追求。曾经有不知多少个夜晚,255这个数字让我辗转反侧,彻夜难眠。但每当别人问起我最近在忙啥,我都会愣住,为255翻滚的思绪总是难以言表。因为我心里很明白,在他们眼里,255只是个再普通不过的数字而已,真要说给他们听,不是换来朋友的不解就是招来旁人的嘲讽。

然而,让我感到欣慰的是,随着数字图像技术的日益发展,代码已经不再是程序员的专利,255也逐渐走上艺术的舞台为人所知。它既可以描绘漫天飘雪的北国风光,也可以抒发樱花绽放的浪漫情怀,既能让你驰骋在一马平川的绿野平原,也能使你陶醉于宁静深邃的碧海蓝天……所有这些梦境般的画面,都有着一个共同点:至少有一种颜色的光会100%地反射到我们的眼球。而在计算机图像领域,用于表示100%的,正是这个代表完美的数字——255!

就这一点而言,无论是对美术一窍不通的程序员,还是对程序涉足尚浅的设计师,乃至与这两个行业都绝缘的同胞们,都应拥有“艺术家”这一称号,因为不懈地追求完美,正是艺术家生活态度的重要体现,而本书更是艺术与科学完美结合的产物。

因此,本书面向的读者群比较广泛,只要您热爱生活,或者喜欢艺术,抑或拥有一颗追求完美的心,就一定可以在本书中找到适合自己的内容。而且本书的重点在于讲解艺术编程的思想,无论是站在艺术的角度来诠释,还是从科学的层面来解读,本书都经得起时间的考验和世俗的漂染。它不会因为手游市场的异军突起而备受冷落,不会因为HTML5的横空出世而迷失自我,更不会因为软件的更新换代而销声匿迹。它就像一杯绿茶,香久益清、味久益醇,每个时代都赋予它不同的气息,弥散于地球的每一个角落,给这个浮躁的社会开辟一片又一片的净土。

可见,艺术是一个很广泛的话题,我不可能通过一本书就涉及到艺术编程的方方面面,因此,先选定一个合适的领域,再围绕相关的技术点逐一展开进行讨论,对我和大家而言,思路都会更加清晰。所以本书会从交互程序中较为关键的技术点出发,讲述自己对艺术编程的一些不太深入的理解,以求抛砖引玉,让更多的读者加入到该领域,共同探讨程序的精妙与艺术的真谛所在。

本书主要面向传统FlashPlayer(即Stage3D以前的版本)进行开发,同时会介绍FlashPlayer11的部分新功能对艺术编程的影响及其应用领域。大家不必担心旧版的功能可能会被淘汰,本书的重点是艺术编程的思想,在艺术的字典里,只有对经典的诠释,没有对过时的遗弃。

虽然交互程序种类繁多,形式也不尽相同,但无论是网站、游戏,还是视频应用、在线软件,其界面中的大部分美术元素都可以通过导入美术设计师制作好的素材,然后使用程序控制其显示隐藏、播放暂停等,来实现产品需求中的交互效果。然而,并非所有的美术素材都适合直接导入到程序中,尤其在中国这片沉淀了五千多年汉字文化的土地上,将数以千计、笔划复杂的字符全部嵌入其中,对于网速尚未发达的中国来说,将是一个相当致命的举措。

大多数情况下,开发人员都通过调用操作系统自带的字体(设备字体)来显示界面中的文本内容。然而,这仅有的几种字体在大多数情况下都过于古板,与绚丽精致的网站界面、活泼生动的游戏场景往往不太搭调;而且在目前的电脑操作系统中,设备字体往往会出现各种较为刺眼的锯齿,从而对交互产品的美观性造成不同程度的破坏。

因此,调用到设备字体以后,我们一般都需要对其进行一些美化处理,比如消除锯齿、描边、变形等,以提高设备字体与整个产品的融合度。本书就以设备字体的处理为中心,和大家一起探讨图像艺术编程的点点滴滴。

在Windows系统里,比较常用的有宋体、黑体、楷体、隶书等,宋体过于单薄;而楷体和隶书艺术感稍强;相比之下,字型浑厚有力且没有太多修饰的黑体就比较合适了,但是黑体也有一些不足,比如边缘过于生硬,整体感略显呆板。几经纠结,我决定使用稍加修饰过的、Windows 7年代才开始在中国普及的微软雅黑设备字体来进行图形处理和特效制作。

言归正传,本书属于中高级编程书籍,所以我会假设大家已经具备一定的ActionScript3编程基础,掌握了ActionScript3的基本语法并熟悉常用的API,不会就这些方面再进行详细而深入的讲解。所以,对ActionScript3尚没有太多了解的设计师朋友或者之前使用其他程序语言的开发者们,在阅读本书之前,我建议您先购买一到两本讲解基础的书以便随时查阅。

我个人比较推荐的几本书有:《ActionScript 3.0 Cookbook》、《ActionScript 3.0权威指南》、《Flash ActionScript 3.0从入门到精通》、《ActionScript 3.0溢彩编程》(该书非常适合设计师阅读)、《ActionScript 3.0图像处理基础教程》。

此外,在开始阅读本书之前,我建议大家先配置好开发的环境,以确保书中的代码在您的计算机上可以正常编译与运行,对开发环境配置不太熟悉的朋友可以参阅本书的附录。

一切准备就绪,艺术编程之旅正式启航!
前言
[第1章 趣解色彩—江南美景与艺术编程
1.1 RGB模式、ARGB模式及其运算]()
1.2 ColorTransform对RGB数值的操作及应用
1.3 HSB模式及其与RGB间的转换
1.4 浅析亮度与灰度/明度的关系
1.5 小结
[第2章 融会贯通—大话图层样式与滤镜
2.1 Photoshop图层样式初体验]()
2.2 Photoshop投影样式在Flash基本滤镜中的体现
2.3 使用斜角滤镜模拟Photoshop的斜面样式
2.4 本章小结
第3章 素食盛宴—揭秘Flash简单滤镜
第4章 数学之美—探寻复杂滤镜与矩阵的奥秘
第5章 南橘北枳—混合模式原理初探
第6章 活字思想—混合模式深度剖析
第7章 自出机杼—叠加效果的制作
第8章 触类旁通—细读Photoshop渐变算法
第9章 高屋建瓴—解读Photoshop图层样式与等高线
第10章 九尺之台—投影等高线与荧光灯效果
第11章 肉食原料—发光等高线与可爱的蛋糕字体
第12章 光泽样式—等高线与扭曲效果的实现
第13章 斜面浮雕—等高线及立体效果的实现
第13章 斜面浮雕—等高线及立体效果的实现
第14章 举一反三—创建自定义图层样式
第15章 真枪实战—让滤镜效果动起来
第16章 项目分享—制作Photoshop艺术字生成器
第17章 珠联璧合—制作Photoshop艺术字样式
第18章 美丽邂逅—为音乐游戏制作Photoshop品质的音乐浪花效果
第19章 看你有多溅—基于Photoshop图像算法的休闲游戏规划
第20章 看你有多溅—基于多线程的“服务端技术”
第21章 看你有多溅—游戏主体与核心技术

时间: 2024-08-02 10:59:35

《点睛:ActionScript3.0游戏互动编程》——导读的相关文章

《深入理解Scala》——第1章,第1.2节当函数式编程遇见面向对象

1.2 当函数式编程遇见面向对象 深入理解Scala 函数式编程和面向对象编程是软件开发的两种不同途径.函数式编程并非什么新概念,在现代开发者的开发工具箱里也绝非是什么天外来客.我们将通过Java生态圈里的例子来展示这一点,主要来看Spring Application framework和Google Collections库.这两个库都在Java的面向对象基础上融合了函数式的概念,而如果我们把它们翻译成Scala,则会优雅得多.在深入之前,我们需要先理解面向对象编程和函数式编程这两个术语的含义

《深入理解Scala》——第1章,第1.4节与JVM的无缝集成

1.4 与JVM的无缝集成 深入理解Scala Scala的吸引力之一在于它与Java和JVM的无缝集成.Scala与Java有很强的兼容性,比如说Java类可以直接映射为Scala类.这种紧密联系使Java到Scala的迁移相当简单,但在使用Scala的一些高级特性时还是需要小心的,Scala有些高级特性是Java里没有的.在Scala语言设计时已经小心地考虑了与Java无缝交互的问题,用Java写的库,大部分可以直接照搬(as-is)到Scala里. 1.4.1 Scala调用Java 从S

《深入理解Scala》——第2章,第2.1节学习使用Scala交互模式(REPL)

第2章 核心规则深入理解Scala 本章包括的内容: • 使用Scala交互模式(Read Eval Print Loop 简称REPL) • 面向表达式编程 • 不变性(Immutability) • Option类 本章内容覆盖了每个新Scala开发者都需要知道的几个主题.本章不会深入到每个主题里,但是会讲到可以让你自己去接着探索的程度.你将学会使用REPL,学会如何利用这个工具做软件的快速原型开发.然后我们会学到面向表达式编程,并从另一个视角来看控制结构是怎么回事.在此基础上,我们来研究不

《深入理解Scala》——第1章,第1.3节静态类型和表达力

1.3 静态类型和表达力 深入理解Scala 开发人员中有一个误解,认为静态类型必然导致冗长的代码.之所以如此是因为很多继承自C的语言强制要求程序员必须在代码中多处明确地指定类型.随着软件开发技术和编译器理论的发展,情况已经改变.Scala利用了其中一些技术进步来减少样板(boilerplate)代码,保持代码简洁. Scala做了以下几个简单的设计决策,以提高代码表达力. • 把类型标注(type annotation)换到变量右边. • 类型推断. • 可扩展的语法. • 用户自定义的隐式转

《深入理解Scala》——第1章,第1.5节总结

1.5 总结 深入理解Scala 本章中,你学到了一些Scala的设计理念.设计Scala的初衷在于把不同语言中的多种概念融合起来.Scala融合了函数式和面向对象编程,尽管显然Java也已经这么做了.Scala精选其语法,极大地减少了语言中的繁冗之处,使一些强大的特性可以优雅地表达,比如类型推断.最后,Scala和Java能够紧密集成,而且运行在Java虚拟机上,这或许是让Scala变成一种实用选择的最重要的一点.几乎不花代价就可以把Scala用于我们的日常工作中. 因为Scala融合了多种概

《深入理解Scala》——第1章,第1.1节Scala一种混合式编程语言

第1章 Scala--一种混合式编程语言 Scala是一种将其他编程语言中的多种技巧融合为一的语言.Scala尝试跨越多种不同类型的语言,给开发者提供面向对象编程.函数式编程.富有表达力的语法.静态强类型和丰富的泛型等特性,而且全部架设于Java虚拟机之上.因此开发者使用Scala时可以继续使用原本熟悉的某种编程特性,但要发挥Scala的强大能力则需要结合使用这些有时候相互抵触的概念和特性,建立一种平衡的和谐.Scala对开发者的真正解放之处在于让开发者可以随意使用最适合手头上的问题的编程范式.

《深入理解Scala》——第2章,第2.2节优先采用面向表达式编程

2.2 优先采用面向表达式编程 深入理解Scala 面向表达式编程是个术语,意思是在代码中使用表达式而不用语句.表达式和语句的区别是什么?语句是可以执行的东西,表达式是可以求值的东西.在实践中这有什么意义呢?表达式返回值,语句执行代码,但是不返回值.本节我们将学习面向表达式编程的全部知识,并理解它对简化程序有什么帮助.我们也会看一下对象的可变性,以及可变性与面向表达式编程的关系. 作者注:语句VS表达式 语句是可以执行的东西,表达式是可以求值的东西. 表达式是运算结果为一个值的代码块.Scala

《深入理解Scala》——第2章,第2.3节优先选择不变性

2.3 优先选择不变性 深入理解Scala 编程中的不变性指对象一旦创建后就不再改变状态.这是函数式编程的基石之一,也是JVM上的面向对象编程的推荐实践之一.Scala也不例外,在设计上优先选择不变性,在很多场景中把不变性作为默认设置.对此,你可能一下子会不适应.本节中,我们将学到不变性对于判等问题和并发编程能提供什么帮助. Scala里首先要明白的是不变对象和不变引用(immutable referene)的区别.Scala里的所有变量都是指向对象的引用.把变量声明为val意味着它是个不变"引

《深入理解Scala》——第2章,第2.4节用None不用null

2.4 用None不用null深入理解Scala Scala在标准库里提供了scala.Option类,鼓励大家在一般编程时尽量不要使用null.Option可以视作一个容器,里面要么有东西,要么什么都没有.Option通过两个子类来实现此含义:Some和None.Some表示容器里有且仅有一个东西,None表示空容器,有点类似List的Nil的含义. 在Java和其他允许null的语言里,null经常作为一个占位符用于返回值,表示非致命的错误,或者表示一个变量未被初始化.Scala里,你可以用

《深入理解Scala》——第2章,第2.5节多态场景下的判等

2.5 多态场景下的判等 深入理解Scala 众所周知,为多态的面向对象系统定义合适的判等和散列方法是个特别难的过程.这是因为子类可能在整个过程中造成一些相当怪异的问题,尤其是当类型层次上有多个实体(concrete)级别的时候.一般来说,对于需要比引用判等更强的判等(译者注:比如需要判断对象内部数据)的类,最好避免多层实体类层次.这是什么意思呢?有些时候类只需要引用判等就够了.也就是说只要两个对象不是同一个实例就判为不等.但是如果我们需要判断两个不同实例是否相等,而且又有多层实体类层次(mul