求解!JS制作全屏背景图思路!!!

缺水的孩子 2013-12-22 09:22:47
最近在折腾一个项目,在做登录页面。想用全屏图片来当背景。于是刚开始的思路认为只要将图片设置成 width:100%; height:100%; 然后就可以了,发现这样做法,会导致图片拉伸。所以我又去了找了一些全背景登录的网站。比如网易的LOFTER 地址:http://www.lofter.com/,发现其页面不管窗口怎样改变和拉伸,图片的位置:1.不会拉伸难看,2.把图片中间的内容放在窗口中间来显示。

所以我就郁闷了,于是又去Google了一下,找到了一个jQuery 写的全背景图插件,也是自适应窗口来改变图片。实现的原理和Lofter基本是差不多的,所以又看了这插件的源码,里面有一些代码和思路不是能理解。实在是太笨,希望各位能帮小弟来说一下这个思路。

插件地址:http://johnpatrickgiven.com/jquery/background-resize/
JS源码地址:http://johnpatrickgiven.com/jquery/background-resize/js/jquery.ez-bg-resize.js

下面本人在把源码贴上,将一些不理解的地方指出,望各位高手帮小弟整理出思路


/******************************************************
* jQuery plug-in
* Easy Background Image Resizer
* Developed by J.P. Given (http://johnpatrickgiven.com)
* Useage: anyone so long as credit is left alone
******************************************************/

(function($) {
// Global Namespace
var jqez = {};

// Define the plugin
$.fn.ezBgResize = function(options) {

// Set global to obj passed
jqez = options;

// If img option is string convert to array.
// This is in preparation for accepting an slideshow of images.
if (!$.isArray(jqez.img)) {
var tmp_img = jqez.img;
jqez.img = [tmp_img]
}

$("<img/>").attr("src", jqez.img).load(function() {
jqez.width = this.width;
jqez.height = this.height;

// Create a unique div container
$("body").append('<div id="jq_ez_bg"></div>');

// Add the image to it.
$("#jq_ez_bg").html('<img src="' + jqez.img[0] + '" width="' + jqez.width + '" height="' + jqez.height + '" border="0">');

// First position object
$("#jq_ez_bg").css("visibility","hidden");

// Overflow set to hidden so scroll bars don't mess up image size.
$("body").css({
"overflow":"hidden"
});

resizeImage();
});
};

$(window).bind("resize", function() {
resizeImage();
});

// Actual resize function
function resizeImage() {

$("#jq_ez_bg").css({
"position":"fixed",
"top":"0px",
"left":"0px",
"z-index":"-1",
"overflow":"hidden",
"width":$(window).width() + "px",
"height":$(window).height() + "px",
"opacity" : jqez.opacity
});

// Image relative to its container
$("#jq_ez_bg").children("img").css("position", "relative");

//Resize the img object to the proper ratio of the window
var iw = $("#jq_ez_bg").children("img").width();
var ih = $("#jq_ez_bg").children("img").height();

if ($(window).width() > $(window).height()) {
console.log(iw, ih);
if (iw > ih) {

//一是这里无法理解这个 是算比例吗???
var fRatio = iw/ih;
$("#jq_ez_bg").children("img").css("width",$(window).width() + "px");

//还有这里的 Math.round($(window).height() * (1/fRatio)) 前面为什么要用窗口的高度,和 后面的为什么要用 1来除,,这又是为了什么???
$("#jq_ez_bg").children("img").css("height",Math.round($(window).width() * (1/fRatio)));

var newIh = Math.round($(window).width() * (1/fRatio));

if(newIh < $(window).height()) {
var fRatio = ih/iw;
$("#jq_ez_bg").children("img").css("height",$(window).height());
$("#jq_ez_bg").children("img").css("width",Math.round($(window).height() * (1/fRatio)));
}
} else {
var fRatio = ih/iw;
$("#jq_ez_bg").children("img").css("height",$(window).height());
$("#jq_ez_bg").children("img").css("width",Math.round($(window).height() * (1/fRatio)));
}
} else {
var fRatio = ih/iw;
$("#jq_ez_bg").children("img").css("height",$(window).height());
$("#jq_ez_bg").children("img").css("width",Math.round($(window).height() * (1/fRatio)));
}

// Center the image
if (typeof(jqez.center) == "undefined" || jqez.center) {
if ($("#jq_ez_bg").children("img").width() > $(window).width()) {
var this_left = ($("#jq_ez_bg").children("img").width() - $(window).width()) / 2;
$("#jq_ez_bg").children("img").css({
"top" : 0,
"left" : -this_left
});
}
if ($("#jq_ez_bg").children("img").height() > $(window).height()) {
var this_height = ($("#jq_ez_bg").children("img").height() - $(window).height()) / 2;
$("#jq_ez_bg").children("img").css({
"left" : 0,
"top" : -this_height
});
}
}

$("#jq_ez_bg").css({
"visibility" : "visible"
});

// Allow scrolling again
$("body").css({
"overflow":"auto"
});


}
})(jQuery);


疑问点:插件是如何制作这个比例的。思路是什么!

疑问代码:
1. var fRatio = iw/ih; //这里无法理解这个 是算比例吗???
2. $("#jq_ez_bg").children("img").css("width",Math.round($(window).height() * (1/fRatio)));
//还有这里的 Math.round($(window).height() * (1/fRatio)) 前面为什么要用窗口的高度,和 后面的为什么要用 1来除,,这又是为了什么???

...全文
402 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
lxhbysn 2013-12-23
  • 打赏
  • 举报
回复
等比放大缩小,不仅仅要改变图片的高和宽, 还要改变图片相对于窗口的上和左边的距离. 所以,要在初始化的时候,计算并记住左边距和上边距占整个窗体的百分比. 改变后,要按照百分比重新计算.
allali 2013-12-23
  • 打赏
  • 举报
回复
不用img 直接在div设背景就不会拉伸了
缺水的孩子 2013-12-23
  • 打赏
  • 举报
回复
谢谢各位的帮助,结贴给分!!
  • 打赏
  • 举报
回复
<body style="position:relative;z-index:0;">
<img style="position:fixed;top:0;left:0;width:100%;height:100%;z-index:0;" data-src="1.jpeg" />
<!-- HTML5 延迟加载,不影响页面整体加载速度  -->
<div id="wrap" style="position:relative;z-index:1;background:transparent;">
<!-- 网页内容 -->
</div>
</body>
zhjdg 2013-12-22
  • 打赏
  • 举报
回复
他先是按比例缩放,然后以图片中间为基准,移动图片
zhjdg 2013-12-22
  • 打赏
  • 举报
回复
他不是一面的缩小。他还会移动图片的,所以是会显示一块,以图片中间为基准,不全的图片。
zhjdg 2013-12-22
  • 打赏
  • 举报
回复
window 大小 width:1152 height:225 pic 大小 width:1024 iw height:768 ih if ($(window).width() > $(window).height()) { if (iw > ih) { var fRatio = iw/ih; iw = window.width 1152 ih = window.width * (1/fRatio) 864 ==win宽*pic高\pic宽. var newIh = ih = 864 if(newIh < $(window).height()) { 864<225 //window.height = 225 } } if(jqez.center){ 应为ih>window.height 所以把图片移动中间去了。 } }
桃园闲人 2013-12-22
  • 打赏
  • 举报
回复
1. var fRatio = iw/ih; //这个是在求宽高比 2. $(window).height() * (1/fRatio)这个表达式我给你变换一下你就明白了,如下: $(window).height() * (1/fRatio) = $(window).height() * (ih/iw)这一步就是按照原始比例做相应的放缩。 公式是这样的:已知新的高度为$(window).height(),设现在新的宽度为X,则有: $(window).height() : X = iw/ih; x = $(window).height() * ih/iw = $(window).height() * 1/fRatio 就是一个公式变形而已。
缺水的孩子 2013-12-22
  • 打赏
  • 举报
回复
自己顶!!求高手帮助!
1.本书附源代码共计381个,其运行环境如下: IE 5或更高版本 Mozilla Firefox 1.5.0.3或更高版本 服务器采用IIS5.1 或以上版本 数据库使用MS Access 2000以上 2.本书所附光盘实例代码: 第1章(\第1章) 查看1.2.htm中noscript显示效果的方法如下: 1.将该实例复制到C:\Inetpub\wwwroot下; 2.选择浏览器的“工具”-“安全”-“本地Intranet”-“自定义级别”-“活动脚本”中选用“禁用”单选框 3.在浏览器中输入下述地址:http://localhost/1.2.htm • 1.1.htm 多段代码相互调用 • 1.2.htm <script>与js 1.3.htm使用的外部JavaScript文件 第2章(\第2章) • 2.1.htm Infinity应用 • 2.2.htm NaN与isNaN()的用法 • 2.3.htm Infinity值的用法 • 2.4.htm 转义字符的使用 • 2.5.htm 引号的转义使用 • 2.6.htm Bolean值的使用 • 2.7.htm undefinded和null的使用 • 2.8.htm 变量的优先级 • 2.9.htm 数值型数据 • 2.10.htm 数组数据类型 • 2.11.htm 字符串型转换为逻辑型数据 • 2.12.htm toLowerCase()方法 • 2.13.htm 通过字符串调用toLowerCase()方法 • 2.14.htm 使用值的数据操作 • 2.15.htm 对数据的引用执行 • 2.16.htm 字符串的比较 第3章(\第3章) • 3.1.htm 表达式示例 • 3.2.htm 加号运算符应用 • 3.3.htm 数值型数据与字符串连接 • 3.4.htm 数值型数据与字符串连接 • 3.5.htm 减号的取反功能 • 3.6.htm 对变量赋常量值 • 3.7.htm 对变量赋常量值 • 3.8.htm “==”与“=”的区别 • 3.9.htm 比较运算符的区别 • 3.10.htm “++”运算符后置应用 • 3.11.htm “++”运算符前置应用 • 3.12.htm 逗号表达式的连接应用 • 3.13.htm 逗号表达式的连接应用 • 3.14.htm typeof运算符的使用 • 3.15.htm new运算符的应用 • 3.16.htm delete运算符的应用 • 3.17.htm 用()改变运算优先级 • 3.18.htm 运算符结合性 第4章(\第4章) • 4.1.htm 条件语句内单行代码的写法 • 4.2.htm 变量赋初值 • 4.3.htm if…else举例 • 4.4.htm 用else进行更多选择 • 4.5.htm if语句的嵌套之一 • 4.6.htm if语句的嵌套之二 • 4.7.htm switch语句 • 4.8.htm while循环语句 • 4.9.htm do-while循环语句 • 4.10.htm for循环语句 • 4.11.htm for循环语句之二 • 4.12.htm continue语句 第5章(\第5章) • 5.1.htm 函数定义 • 5.2.htm 无返回值的函数 • 5.3.htm 有返回值的函数及其调用 • 5.4.htm 直接使用函数返回值 • 5.5.htm 直接使用函数返回值 • 5.6.htm 直接使用函数返回值 • 5.7.htm 参数变量可变的函数 • 5.8.htm 动态函数 • 5.9.htm encodeURI方法 • 5.10.htm decodeURI方法 • 5.11.htm decodeURI方法 • 5.12.htm decodeURI方法 • 5.13.htm isNaN方法 • 5.14.htm escape方法 • 5.15.htm unescape方法 第6章(\第6章) • 6.1.htm 对象创建与属性调用 • 6.4.htm this关键字的使用 • 6.5.htm 数组的length属性 • 6.6.htm 数组元素遍历 • 6.7.htm 数组元素遍历 • 6.8.htm 数组元素遍历之二 • 6.9.htm 用构造函数来创建数组 • 6.10.htm 用构造函数来创建数组之二 • 6.11.htm join方法 • 6.12.htm revrse方法 • 6.13.htm sort方法 • 6.14.htm alice方法 • 6.15.htm splice方法 • 6.16.htm Object对象 • 6.17.htm anchor方法 • 6.18.htm big方法 • 6.19.htm fontcolor方法 • 6.20.htm 字符串搜索 • 6.21.htm link方法 • 6.22.htm 字符串转换与匹配 • 6.23.htm Date对象的方法 • 6.24.htm toString方法 • 6.25.htm with语句 • 6.26.htm for…in语句调用对象属性 • 6.25.htm for…in语句调用属性值 第7章(\第7章) • 7.1.htm 字符串合并 • 7.2.htm 字符串合并 • 7.3.htm 字符串中使用转义字符 • 7.4.htm document.write()与alert() • 7.5.htm unescape()函数的使用 • 7.6.htm escape()函数的使用 • 7.7.htm 进制转换 • 7.8.htm isNaN() • 7.9.htm 进制转换 • 7.10.htm 产生1~6间的随机数 • 7.11.htm Math对象的with结构 • 7.11.htm toExponential()方法和toFixed()方法 • 7.13.htm toPrecision()方法使用示例 • 7.14.htm toString()方法使用示例 第8章(\第8章) • 8.1.htm 创建正则表达式 • 8.2.htm 转义字符中的“” • 8.3.htm exec()方法应用 • 8.4.htm RegExp对象的使用 • 8.5.htm match方法的使用 • 8.6.htm search方法 • 8.7.htm replace方法的使用 • 8.8.htm split方法 • 8.9.htm 字符匹配 • 8.10.htm 圆点(.章)元字符 • 8.11.htm 行首匹配字符^ • 8.12.htm 行尾匹配字符$ • 8.13.htm 元字符\b • 8.14.htm replace方法的使用 第9章(\第9章) • 9.1.htm 超级链接上的事件绑定 • 9.2.htm HTML 事件绑定 • 9.3.htm 非标准事件绑定 • 9.4.htm 简单的JavaScript事件绑定 • 9.5.htm 简单的JavaScript事件绑定 • 9.6.htm 事件处理器的作用域 • 9.7.htm 事件处理器的作用域之二 • 9.8.htm 事件处理器的返回值 • 9.9.htm 自动触发事件 • 9.9.htm 直接在表单上调用事件 • 9.11.htm attachEvent()方法 • 9.12.htm 事件流测试 • 9.13.htm DOM2 事件模型基本语法 • 9.14.htm DOM2 鼠标事件 • 9.15.htm 取消默认动作之一 • 9.16.htm 取消默认动作之二 • 9.17.htm 创建事件 第10章(\第10章) • 10.1.htm 鼠标事件处理 • 10.2.htm 页面预览 • 10.3.htm 图像切换 • 10.4.htm 接收键盘输入 • 10.5.htm 用鼠标点亮文本 • 10.6.htm 图片跟随鼠标 • 10.7.htm 文字跟随鼠标 • 10.8.htm 星星跟随鼠标 • 10.9.htm 鼠标感应 弹出警告框 • 10.10.htm 鼠标感应 渐显图片 • 10.11.htm 禁用鼠标右键 第11章(\第11章) • 11.1.htm 省略window的alert()方法 • 11.2.htm 未省略window的alert()方法 • 11.3.htm 未省略window的document.write()方法 • 11.4.htm Document对象部分属性与方法的使用 • 11.5.htm HTML文档属性属性 • 11.6.htm 同时使用name和id • 11.7.htm 事件控制器的例子 • 11.8.htm JavaScript实现事件控制器 • 11.9.htm 元素属性综合应用 • 11.10.htm 动态修改表单元素内容 第12章(\第12章) • 12.1.htm Document树的简单例子 • 12.2.htm getElementById()方法 • 12.3.htm DOM结点属性 • 12.4.htm 文档树检测 • 12.5.htm 结点插入与追加 • 12.6.htm 结点复制 • 12.7.htm 结点删除与替换 • 12.8.htm 处理文本结点的方法 • 12.9.htm 处理属性的方法 • 12.10.htm HTMLElement对象 • 12.11.htm DOM遍历API • 12.12.htm DOM Range API • 12.13.htm 读取HTML元素内容 • 12.14.htm 修改HTML元素内容 • 12.15.htm innerText、outerText、outerHTML属性 • 12.16.htm document.all[] 第13章(\第13章) • 13.1.htm HTML对象模型 • 13.2.htm DHTML对象模型 • 13.3.htm DHTML对象模型方法显示和修改网页文字内容 • 13.4.htm DHTML对象模型方法新增和删除表格行内容 • 13.5.htm W3C对象模型方法显示和修改网页内容 • 13.6.htm W3C对象模型方法显示和修改表格内容 • 13.7.htm “相对位置”定位 • 13.8.htm “绝对位置”定位 • 13.9.htm z-index属性 • 13.10.htm z-index属性之二 • layerlib.js 跨浏览器DHTML库 • 13.12.htm 跨浏览器DHTML库的使用 第14章(\第14章) • 14.1.htm confirm()方法用作判断条件 • 14.2.htm alert()方法与confirm()方法的使用 • 14.3.htm prompt()方法的使用 • 14.4.htm window.open()方法 • 14.5.htm 用链接和按钮实现窗口打开 • 14.6.htm 窗口的打开和关闭 • 14.7.htm 安全关闭窗口 • 14.8.htm 窗口特征属性综合举例 • 14.9.htm 一个窗口写入的简单例子 • 14.10.htm 动态写入HTML代码 • 14.11.htm 窗口写入的应用示例 • 14.12.htm DOM窗口交互 • 14.13.htm 窗口方法测试 • 14.14.htm 用按钮载入页面 • 14.14.htm status属性 • 14.16.htm defaultStatus属性 • 14.17.htm 滚动的状态栏 • 14.18.htm 超时设定 • 14.19.htm onload事件 • 14.20.htm 模式窗口 • 14.21.htm 无模式窗口 • 14.22.htm 窗口应用举例 • 14.23.htm 全屏窗口 第15章(\第15章) 代码说明:本章部分代码使用了第10章、第19章几个文件,如果不能正常显示,则可能这些文件位置已改变。 • 15.1.htm 简单框架 • frames.htm 网页框架 • moreframes.htm 更多框架 • moreframes.htm 框架关联显示 • 15.5.htm 简单的框架网页 • 15.6.htm 内联框架 • 15.7.htm 简单的框架嵌套 • 15.8.htm 框架嵌套 • 15.9.htm 交叉框架通信 • input.htm 交叉框架通信的输入部分 • output.htm 交叉框架通信的输出部分 • 15.12.htm 嵌套框架交叉通信 • top.htm 嵌套框架交叉通信的上部框架 • bottom.htm 嵌套框架交叉通信的底部框架 • minput.htm 嵌套框架交叉通信的输入部分 • moutput.htm 嵌套框架交叉通信的输出部分 • stateframes.htm 状态框架集 • stateframe.htm 状态框架 • mainframe.htm 主框架 • mainframe2.htm 主框架之二 第16章(\第16章) • 16.1.htm 文档颜色属性应用 • 16.2.htm lastModified • 16.3.htm lastModified的返回值 • 16.4.htm document.location • 16.6.htm document.location的详细属性 • 16.6.htm 验证document.referrer • 16.7.htm 验证document.referrer • 16.8.htm document.write()与document.writeln() • 16.9.htm 字符串连接输出 • 16.10.htm document.close()和document.open() • 16.11.htm document.links[].href • 16.12.htm elements[] • 16.13.htm images[] • 16.14.htm document.getElementById() • 16.15.htm document.createElement() • 16.16.htm 设置表格属性 • 16.17.htm 显示表格属性 • 16.18.htm 操作表格元素 • 16.19.htm 插入和删除表元 • 16.20.htm 改变
的内容 • 16.21.htm 改变页面样式 • blue.css 16.21.htm用到的样式文件 • red.css 16.21.htm用到的样式文件 • green.css 16.21.htm用到的样式文件 第17章(\第17章) • 17.1.htm Form对象测试 • 17.2.htm 基本按钮 • 17.3.htm button按钮 • 17.4.htm 文本域 • 17.5.htm 文本区 • 17.6.htm 限制输入长度的文本区 • 17.7.htm 限制输入长度的文本区之二 • 17.8.htm 复选框与单选按钮 • 17.9.htm 验证输入内容是否为空 • 17.10.htm 验证输入内容是否为空 • 17.11.htm 混合表单验证 • 17.12.htm 按键屏蔽 • 17.13.htm 屏蔽表单域 • 17.14.htm 动态表单 第18章(\第18章) • 18.1.htm 复选框 • 18.2.htm 单选按钮 • 18.3.htm 复选框与单选按钮的组合使用 • 18.4.htm 使用elements[]数组 • 18.5.htm 选择控件 • 18.6.htm 多项选择控件 • 18.7.htm 级联选择控件 第19章(\第19章) • 19.1.htm 友情链接 • 19.2.htm 需要确认的友情链接 • 19.3.htm 渐显效果的下拉菜单 • 19.4.htm 模拟系统菜单 • 19.5.htm 图片显示窗口 • 19.6.htm 远程控制菜单 • 19.7.htm 滑动菜单 • 19.8.htm 左键弹出式菜单 • 19.9.htm 浮动菜单 • 19.10.htm 导航式菜单 第20章(\第20章) • 20.1.htm 显示浏览器名称与版本号 • 20.2.htm 显示浏览器名称(改进章) • 20.3.htm JavaScript支持检测1 • 20.4.htm JavaScript支持检测2 • 20.5.htm JavaScript对象检测 • 20.6.htm Screen对象 • 20.7.htm 获取浏览器窗口大小 • 20.8.htm 字号随浏览器窗口大小而改变 • 20.9.htm 对代码20.8的改写 • 20.10.htm 在网页中有选择地显示图片 • 20.11.htm 客户端性能检测 • 20.12.htm 浏览器按键模拟 • 20.13.htm 修改Mozilla用户主页 • 20.14.htm 修改IE用户主页 第21章(\第21章) • 21.1.htm 编码与解码 • 21.2.htm Cookie值被覆盖 • 21.3.htm Cookie分析 • 21.4.htm 用Cookie保存定制样式 • 21.5.htm DHTML行为 第22章(\第22章) • 22.1.htm 通过单击按钮来改变图像 • 22.2.htm 随机显示不同图像 • 22.3.htm 结构化图形控件 • 22.4.htm 图像定位示例 • 22.5.htm 在IE中拖动图像 • 22.6.htm 按钮翻转示例 • 22.7.htm 跟随屏幕移动的图片 • 22.8.htm 多幅图片滚动显示 • 22.9.htm 图片的左右循环飘动 • 22.10.htm 图片的渐隐渐显 • 22.11.htm 不停闪烁的图片 • 22.12.htm 图片倒映 第23章(\第23章) • 23.1.htm 简单过渡 • layerlib.js JavaScript外部文件 • 23.3.htm 目标翻转 • 23.4.htm 运动图像 • 23.5.htm 随机图像 • 23.6.htm 动画效果 • 23.7.htm Sequencer控件 • 23.8.htm Path控件 • 23.9.htm 永远居中的背景图片 • 23.10.htm 随机显示的背景图片 • 23.11.htm 垂直滚动公告板 • 23.12.htm 类似Flash的字幕效果 • 23.13.htm 地震效果 第24章(\第24章) • MyApplet.txt 简单的Java Applet源程序 • 24.2.htm 在JavaScript中访问Java Applet • 24.3.htm 简单的Flash插件 • 24.4.htm mimeTypes[]数组 • 24.5.htm 使用mimeTypes[]检测支持的媒体类型 • 24.6.htm 使用navigator.plugins[][]列举所有Flash MIME类型 • 24.7.htm 列举plugins[]数组的内容 • 24.8.htm 简单的Flash播放控制器 • 24.9.htm ActiveX控件示例 • 24.10.htm 使代码兼容多种浏览器 • 24.11.htm Flash 播放控制器(ActiveX) 第25章(\第25章) • 25.1.htm 单向通信中的Image • 25.2.htm JavaScript向服务器发送RPC • 25.3.htm 动态内容 • 25.4.htm 中的单词拼写检查 • 25.5.htm 内联框架 第26章(\第26章) 1.查看书中图26.9的效果的方法: 用记事本打开26.5.xml,找到第二行,内容如下: 将两端的去掉并保存该文档后,用IE打开,就可看到图26.9所示的效果。 2.查看书中图26.10的效果的方法: 用记事本打开26.5.xml,找到第3行,内容如下: 将两端的去掉并保存该文档后,用IE打开,就可看到图26.9所示的效果。 3.要查看书中图26.11的效果,须连接Internet。 • 26.1.xml XML文档的例子 • 26.2.xml 包含DTD及其实例的XML文档 • 26.3.xml 要转换的XML文档 • test.xsl 转换XML文档的模板文件 • 26.5.xml 更复杂的要转换的XML文档 • staff.xsl XSL样式表 • staff.css CSS样式表 • 26.8.xml 使用了MathML的XML文档 • 26.9.htm 显示XML文档根结点 • 26.10.htm 使用Jscript与DOM直接操作XML • 26.11.xml 使用Mozilla直接操作XML • 26.12.js 使用Mozilla直接操作XML用到的js文件 • 26.13.htm IE XML数据岛应用 • 26.14.htm IE XML数据岛 • 26.15.rss 简单的rss文件 • 26.16.htm 简单的rss阅读器 第28章(\第28章) • 28.1.htm 显示当前时间 • 28.2.htm 显示当前日期和星期 • 28.3.htm 显示日期、时间和星期 • 28.4.htm 分时段问候 • 28.5.htm 以数字图片来显示时间 • 28.6.htm 显示世界不同地区的当前时间 • 28.7.htm 总是悬浮的时钟 • 28.8.htm 简单的加减乘除运算 • 28.9.htm 能进行四则混合运算的计算器 • 28.10.htm 在表单中显示打字效果 • 28.11.htm 随页面刷新更换页面背景 • 28.12.htm 随页面刷新显示不同图片 第29章(\第29章) • 29.1.htm 汉诺塔问题求解 • 29.2.htm 位置固定的对联广告 • 29.3.htm 随页面滚动的对联广告 • 29.4.htm 循环滚动的多幅广告 • css.css 代码29.4用到的样式文件 • 29.6.htm 用JavaScript实现级联选择 • ajax_server.asp 使用ASP访问demo数据表 • ajax.htm 使用ajax实现级联选择 第30章(\第30章) 代码说明:本章实现了一个ASP留言板程序,程序需要在IIS环境下运行。 • index.asp 留言板主程序 • guestbook.mdb 留言板数据库程序 • images\ 留言板使用的图像文件目录
第1篇ActionScript3.0语言基础 第1章ActionScript3.0概述 2 1.1ActionScript概述 2 1.1.1ActionScript环境 2 1.1.2ActionScript3.0特性 3 1.1.3ActionScript3.0代码组织 5 1.2ActionScript3.0API概览 5 1.3小结 8 第2章搭建ActionScript3.0开发环境 9 2.1搭建基于FlashCS3IDE的开发环境 9 2.1.1安装FlashCS3ID 9 2.1.2安装FlashCS3IDEupdate9.0.2 11 2.1.3在FlashCS3IDE下创建ActionScript3.0项目 11 2.2搭建基于Flex的开发环境 13 2.2.1安装FlexBuilder3 13 2.2.2在FlexBuilder3下创建ActionScript3.0项目 15 2.3服务端部署 16 2.3.1安装JDK 16 2.3.2安装Tomcat服务器 18 2.3.3Tomcat集成RED5服务器 20 2.4安装VisualBasic6.0 22 2.5小结 23 第3章ActionScript3.0语法 24 3.1变量 24 3.1.1变量声明 24 3.1.2变量赋值 25 3.1.3变量的生存周期 26 3.2基本数据类型 27 3.2.1Object类型 28 3.2.2int类型 28 3.2.3uint类型 29 3.2.4Number类型 30 3.2.5Boolean类型 32 3.2.6String类型 33 3.2.7Null类型 34 3.2.8void类型和*类型 34 3.3动态数据类型检查 35 3.4变量的类型转换 37 3.5ActionScript3.0语法 38 3.5.1大小写敏感 38 3.5.2字面量 38 3.5.3分号 39 3.5.4点号 39 3.5.5括号 39 3.5.6常量 40 3.5.7注释 41 3.5.8关键字与保留字 41 3.6操作符 42 3.6.1ActionScript3.0的运算规则 42 3.6.2初始化操作符 43 3.6.3数学操作符 43 3.6.4位运算符 45 3.6.5赋值操作符 47 3.6.6关系操作符 47 3.6.7逻辑操作符 48 3.6.8条件操作符 49 3.6.9E4X操作符 49 3.7条件语句 50 3.7.1if…else语句 50 3.7.2switch语句 53 3.8循环语句 55 3.8.1while语句 55 3.8.2do…while语句 56 3.8.3for语句 56 3.8.4for…in语句 57 3.8.5foreach…in语句 58 3.8.6break与continue 59 3.9函数 60 3.9.1函数的基本概念 60 3.9.2函数定义与调用 60 3.9.3函数的参数 63 3.9.4函数的返回值 66 3.9.5函数对象 66 3.9.6函数的生存周期 67 3.9.7递归函数 68 3.9.8全局函数 69 3.10小结 72 第2篇ActionScript3.0面向对象特性 第4章ActionScript3.0面向对象编程 74 4.1面向对象编程 74 4.1.1对象的世界 74 4.1.2具体与抽象 75 4.2类 75 4.2.1类的定义 76 4.2.2类的属性 78 4.2.3类的方法 80 4.2.4对象成员与静态成员 83 4.2.5this关键字 84 4.2.6动态类 85 4.3接口 86 4.3.1接口定义 86 4.3.2接口实现 87 4.3.3接口应用 87 4.4继承 89 4.4.1实现继承 89 4.4.2对象成员的继承 90 4.4.3静态成员继承 93 4.5包 94 4.5.1创建包 94 4.5.2类路径 95 4.5.3使用包 98 4.6订单利润计算示例 99 4.6.1需求分析 99 4.6.2编写代码 100 4.7小结 103 第5章ActionScript3.0中的String对象 104 5.1创建String对象 104 5.2字符串处理 105 5.2.1字符处理 105 5.2.2字符串比较 107 5.2.3裁割与连接 108 5.2.4查找、匹配与替换 110 5.2.5提取子串 112 5.2.6大小写转换 113 5.2.7空白处理 114 5.3制作文字移动效果 115 5.4小结 116 第6章ActionScript3.0中的Array类型 117 6.1索引数组 117 6.1.1创建索引数组 117 6.1.2数组元素的语句遍历 118 6.1.3数组元素的函数遍历 120 6.1.4元素处理 123 6.1.5数组复制 126 6.1.6查找与匹配 127 6.1.7数组排序 128 6.1.8数组与字符串 131 6.2关联数组 131 6.2.1Object类实现的关联数组 132 6.2.2Dictionary类实现的关联数组 132 6.3多维数组 133 6.4太阳系行星排序示例 135 6.5小结 138 第7章ActionScript3.0中的日期和时间 139 7.1日期与时间 139 7.1.1创建日期对象 139 7.1.2日期对象的属性与方法 140 7.1.3日期格式化 143 7.2时间间隔 144 7.2.1使用Timer类 144 7.2.2秒表示例 146 7.3小结 149 第8章ActionScript3.0异常处理 150 8.1ActionScript3.0异常 150 8.1.1异常概述 150 8.1.2异常分类 150 8.2ActionScript3.0调试方法 152 8.2.1FlashPlayer的调试版本 152 8.2.2在FlashCS3IDE中调试 152 8.2.3在FlexBuilder3中进行调试 155 8.3处理ActionScript3.0中的异常 160 8.3.1使用try…catch…finally语句 160 8.3.2throw语句主动抛出异常 162 8.3.3处理异常事件 163 8.4异常类型 163 8.4.1异常对象 164 8.4.2异常分类 164 8.4.3自定义异常类型 166 8.5小结 167 第3篇ActionScript3.0可视化编程 第9章可视化编程基础 170 9.1可视化编程模型 170 9.1.1可视化编程概述 170 9.1.2可视对象 172 9.1.3可视对象列表 175 9.1.4可视对象管理函数 181 9.2文档类绑定和元件类绑定 194 9.2.1Flash文档类绑定 195 9.2.2元件类绑定 196 9.3小结 198 第10章对象交互与事件???199 10.1ActionScript3.0事件模型 199 10.1.1事件流 200 10.1.2事件侦听器 204 10.2事件对象 208 10.2.1事件类型基类Event 208 10.2.2鼠标事件类型MouseEvent 211 10.2.3键盘事件KeyboardEvent 213 10.2.4文本事件类TextEvent 214 10.2.5焦点事件FocusEvent 214 10.2.6计时器事件TimerEvent 216 10.2.7HTTP状态事件HTTPStatusEvent 216 10.2.8网络状态事件NetStatusEvent 216 10.2.9进度事件ProgressEvent 217 10.2.10异步异常事件ErrorEvent、IOErrorEvent、SecurityErrorEvent 218 10.2.11全屏事件FullScreenEvent 219 10.3虚拟键盘示例 220 10.4小结 224 .第11章ActionScript3.0可视对象 225 11.1可视对象类DisplayObject 225 11.1.1可视对象列表 225 11.1.2位置、尺寸、透明度与可见性 227 11.1.3缩放与旋转 228 11.1.4坐标体系 231 11.1.5背景色 232 11.1.6区域与范围 233 11.1.7色彩调整 235 11.1.8遮罩 236 11.1.9位图缓存 237 11.1.10混合模式 238 11.2舞台对象Stage 239 11.2.1图像品质与帧频 239 11.2.2缩放与对齐 240 11.2.3焦点控制 242 11.2.4交互控制 242 11.2.5全屏?刂?243 11.3容器对象Sprite 245 11.3.1按钮模式 245 11.3.2热区 246 11.3.3对象拖放 247 11.4影片剪辑MovieClip 248 11.5加载器Loader 251 11.6按钮对象SimpleButton 254 11.7文本框TextField 255 11.7.1文本类型 255 11.7.2外观控制 256 11.7.3设置文本 256 11.7.4处理HTML 258 11.7.5输入限制 260 11.7.6文本格式化 260 11.7.7多行模式 262 11.7.8适应与滚动 263 11.7.9选区 264 11.7.10字体嵌入 265 11.7.11事件处理 268 11.8小结 269 第4篇ActionScript3.0数据处理 第12章数字类型与数学运算 272 12.1数字类型概述 272 12.2Math类 273 12.2.1角度与弧度 273 12.2.2Math常量 273 12.2.3最大值、最小值与绝对值 274 12.2.4数值舍入与随机函数 274 12.2.5幂运算与开方运算 275 12.2.6对数函数 276 12.2.7坐标与弧度 276 12.2.8三角函数 277 12.3求解一元二次方程示例 278 12.4小结 279 第13章XML应用基础 280 13.1了解XML 280 13.2处理XML数据 283 13.2.1初始化XML对象 283 13.2.2访问与遍历 285 13.3XML对象 288 13.3.1XML对象的数据处理方式 288 13.3.2处理子节点 289 13.3.3访问XML数据 293 13.3.4处理命名空间 294 13.4网络图片加载器示例 295 13.5小结 298 第14章正则表达式与字符串匹配 299 14.1正则表达式概述 299 14.2正则表达式语法 300 14.2.1创建对象 300 14.2.2字符、元字符与元序列 301 14.2.3字符集 306 14.2.4组 307 14.3标记、属性与方法 310 14.3.1正则表达式的标记与属性 310 14.3.2正则表达式的方法 314 14.4小结 315 第5篇ActionScript3.0图形编程 第15章ActionScript3.0中的几何对象 318 15.1Point对象 318 15.1.1创建Point对象 318 15.1.2距离计算 319 15.1.3中间点 319 15.1.4极坐标转换 319 15.1.5坐标计算 320 15.1.6坐标缩放 320 15.2矩形对象 321 15.2.1创建Rectangle对象 321 15.2.2确定矩形位置 321 15.2.3调整矩形 322 15.2.4位置关系判定 324 15.3矩阵对象 325 15.3.1初始化Matrix对象 326 15.3.2矩阵应用 327 15.4小结 328 第16章ActionScript3.0图形绘制 329 16.1绘制矢量图形 329 16.1.1位图与矢量图 329 16.1.2绘制矢量图 330 16.2使用线条 330 16.2.1设置线条样式 331 16.2.2直线与曲线 332 16.3使用填充 334 16.3.1单一色填充 335 16.3.2渐变色填充 336 16.3.3位图填充 337 16.4图形绘制函数 338 16.4.1内置图形绘制函数 338 16.4.2绘制三角形 340 16.4.3绘制正多边形 340 16.5白板示例 341 16.6小结 345 第17章ActionScript3.0运动编程 346 17.1运动编程原理 346 17.1.1物体移动 346 17.1.2坐标计算 348 17.2简单物理引擎 352 17.2.1运动的物理原理 352 17.2.2创建物理引擎 354 17.2.3匀速直线运动 363 17.2.4匀加速运动 364 17.2.5圆周运动 365 17.2.6卫星绕地运动 366 17.3小结 368 第18章位图处理 369 18.1位图对象 369 18.1.1位图格式 369 18.1.2位图图像与位图数据 370 18.1.3创建位图对象 370 18.1.4载入位图对象 371 18.2处理位图数据 371 18.2.1位图复制 372 18.2.2像素处理 376 18.2.3位图填充 378 18.2.4生成噪点 379 18.2.5图像滚动 381 18.2.6色彩调整 382 18.2.7阀值处理 383 18.2.8图像混合 384 18.3位图画板示例 386 18.4小结 392 第19章ActionScript3.0滤镜 393 19.1使用滤镜 393 19.1.1滤镜原理 393 19.1.2对可视对象应用滤镜 394 19.1.3对位图数据应用滤镜 395 19.2投影滤镜DropShadowFilter 396 19.3发光滤镜GlowFilter 398 19.4渐变发光滤镜GradientGlowFilter 399 19.5模糊滤镜BlurFilter 401 19.6斜角滤镜BevelFilter 403 19.7渐变斜角滤镜GradientBevelFilter 404 19.8色彩矩阵滤镜ColorMatrixFilter 406 19.9矩阵盘绕滤镜ConvolutionFilter 408 19.10置换滤镜DisplacementMapFilter 410 19.11滤镜切换的相册示例 412 19.12小结 415 第6篇ActionScript3.0多媒体编程 第20章音频编程 418 20.1音频概述 418 20.2播放声音 418 20.2.1音频嵌入 419 20.2.2音频载入 420 20.2.3流式音频 422 20.3播放控制 424 20.3.1缓冲控制 424 20.3.2回放控制 424 20.3.3音效控制 425 20.4MP3播放器 425 20.5使用麦克风 434 20.5.1获取麦克风 434 20.5.2回环模式 435 20.5.3静音设置 436 20.6录制音频到RED5服务器 436 20.7小结 442 第21章视频编程 443 21.1FLV视频 443 21.1.1视频概述 443 21.1.2视频转换 444 21.2播放视频 445 21.2.1视频嵌入 445 21.2.2组件播放 446 21.2.3视频载入 447 21.2.4流式视频 449 21.3播放控制 450 21.3.1缓冲控制 450 21.3.2回放控制 451 21.3.3视频音效 453 21.4视频播放器示例 453 21.4.1视频载入播放器 453 21.4.2视频流播放器 461 21.5使用摄像头 467 21.5.1获取摄像头 467 21.5.2模式设置 468 21.5.3本地回放 469 21.5.4运动检测 469 21.5.5图像质量 469 21.5.6视频录制 470 21.6录制视频到RED5服务器 471 21.7小结 477 第7篇ActionScript3.0数据通信 第22章本地通信 480 22.1本地连接LocalConnection 480 22.1.1使用本地连接 480 22.1.2异域调用 481 22.1.3应用授权示例 482 22.2本地数据存储 486 22.2.1使用SharedObject本地存储 486 22.2.2用户登录示例 487 22.3小结 491 第23章网络通信 492 23.1处理外部数据 492 23.1.1请求与参数 492 23.1.2简单数据发送 493 23.1.3数据发送与载入 494 23.1.4图片载入示例 497 23.2远程数据共享 499 23.2.1使用远程共享 499 23.2.2绘图共享示例 500 23.3FlashRemoting调用远程方法 503 23.3.1调用远程方法 503 23.3.2远程调用示例 505 23.4套接字通信 506 23.4.1使用套接字通信 506 23.4.2套接字通信示例 508 23.5文件上传与下载 512 23.5.1文件上传 512 23.5.2文件下载 515 23.5.3文件上传下载示例 515 23.6小结 520 第8篇深入FlashPlayer 第24章FlashPlayer的客户端系统 522 24.1系统类System 522 24.1.1设置编码 522 24.1.2内存使用 522 24.1.3播放器控制 523 24.1.4剪贴板 523 24.1.5System类功能示例 524 24.2获取系统信息 526 24.2.1使用Capabilities类 527 24.2.2本地机器特性检测示例 528 24.3输入法编辑器IME控制 530 24.3.1使用IME 530 24.3.2IME控制示例 532 24.4fscommand()函数 535 24.4.1使用fscommand()函数 535 24.4.2fscommad()函数示例 537 24.5小结 539 第25章FlashPlayer的安全特性 540 25.1安全性概述 540 25.1.1权限管控模型 540 25.1.2安全沙箱模型 541 25.2系统管理员管控 543 25.2.1使用mms.cfg配置文件 543 25.2.2全局信任目录管控 548 25.3用户管控 548 25.3.1使用FlashPlayer设置对话框 549 22.3.2使用全局设置管理器 550 25.3.3用户受信任目录 553 25.4FlashPlayer许可控制 554 25.4.1内容载入许可 554 25.4.2交叉域与跨脚本访问许可 555 25.4.3宿主程序中的安全许可 556 25.4.4全屏模式安全许可 557 25.4.5本地连接安全许可 557 25.5交叉域安全示例 558 25.5.1创建测试的SWF 558 25.5.2跨脚本访问测试 562 25.5.3文本载入测试 563 25.6小结 564 第26章FlashPlayer与宿主程序 565 26.1使用外部接口ExternalInterface类 565 26.1.1ExternalInterface类 565 26.1.2ActionScript与JavaScript交互 566 26.1.3ActionScript与桌面程序交互 567 26.2网页脚本交互示例 568 26.3桌面应用交互示例 571 26.4小结 573 第27章ActionScript打印控制 574 27.1使用打印作业对象 574 27.1.1创建与启动打印作业 574 27.1.2设置打印内容 575 27.1.3打印调整 576 27.2打印示例 577 27.3小结 582 第9篇FlashAIR入门 第28章创建与部署AIR应用 584 28.1AdobeAIR运行时安装与配置 584 28.2使用FlashCS3IDE创建和部署AIR应用 585 28.2.1安装FlashCS3IDEupdate9.0.3 585 28.2.2创建和部署AIR应用 585 28.3使用FlexBuilder3创建和部署AIR应用 588 28.4AIR应用配置文件 591 28.4.1应用程序配置 591 28.4.2初始化窗口设置 595 28.4.3图标设置 595 28.4.4关联文??柚?596 28.5小结 597 第29章AIR部分特性介绍 598 29.1AIR本地窗口 598 29.1.1创建与关闭本地窗口 598 29.1.2添加窗体内容 600 29.1.3位置与尺寸 600 29.1.4窗口层叠控制 602 29.1.5本地窗口控制示例 602 29.2访问文件系统 612 29.2.1目录与文件引用 612 29.2.2目录与文件浏览 614 29.2.3目录与文件属性 615 29.2.4快速载入与保存 616 29.2.5目录与文件管理 617 29.2.6目录与文件管理示例 620 29.2.7文件内容读写 626 29.2.8文件内容读写示例 629 29.3访问数据库 632 29.3.1使用数据库连接 632 29.3.2建立数据表 634 29.3.3插入数据 635 29.3.4设置SQL语句参数 636 29.3.5查询数据 636 29.3.6用户注册与登录示例 637 29.4小结 642 第10篇实战篇 第30章AdobeAIR应用——本地播放器 644 30.1分析与设计 644 30.1.1功能分析 644 30.1.2界面设计 645 30.1.3模块设置 647 30.2建立项目 649 30.3创建新组件 650 30.3.1创建滚动容器组件 650 30.3.2创建复选框组件 653 30.3.3创建缓冲与播放控制条 655 30.4创建播放器工具类 656 30.4.1创建数据库工具类 656 30.4.2创建字符串?ぞ呃?658 30.5创建数据模块 659 30.5.1创建MediaFile类 659 30.5.2创建MediaFileList类 662 30.6创建播放器事件类 665 30.7创建播放器内核 666 30.7.1创建IMediaPlayerCore接口 667 30.7.2创建播放器内核基类 667 30.7.3创建MP3播放内核 671 30.7.4创建FLV播放内核 675 30.8创建播放器界面 680 30.8.1创建MediaFileItemUI类 680 30.8.2创建MediaFileListUI类 682 30.8.3创建播放列表管理器类 684 30.8.4创建播放控制面板类 686 30.8.5创建视频部件 689 30.8.6创建播放器整体部件 691 30.9测试主程序 696 30.10小结 697 第31章AsWing应用——聊天室程序 698 31.1分析与设计 698 31.1.1功能分析 698 31.1.2界面设计 699 31.1.3AsWing简介 700 31.2部署服务端 700 31.3创建客户端项目 704 31.4创建聊天室界面 706 31.4.1创建登录窗口 706 31.4.2创建用户聊天界面 711 31.5创建聊天室通信与控制组件 715 31.5.1定义DataEvent事件类 715 31.5.2添加IServerApi接口 716 31.5.3定义HTTPWeb应用通信与控制类 716 31.5.4定义RTMP通信与控制类 719 31.6测试主程序 722 31.7小结 723

87,997

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧