本页面由 Flash 保存计划 从 Internet Archive 存档还原 · 快照 2006-05-09 · 原址 http://bbs.flash8.net/blogs/xml/default.aspx ← Flash 保存计划
Flash8 字体特效
Flash8 字体特效
本文作者:egoldy
文章出处:http://www.actionscript.com
文章性质:翻译
阅读次数:78
发布时间:2006-03-22
本文来自Actionscript.com.本站对其进行了翻译和整理.时间仓促,难免有误,请多指正.


     F8创建字体特效
   TextScript类的结构
    
    学习此教程的全部源文件包,其中包含有textscript类,这里下载
    我想创建一个类用来管理和创建看起来费时又费力的字体效果制作过程,使用它可以允许我们轻松的创建自定义的效果,经过一系列的不同方式的试验,我最终完成了一个类,把它称之为TextScript.它预置了一些字体效果在里面,但最重要的是你可以使用这个类来创建你想象中的字体效果。如下面的效果。

  TextScript类有两个基本方法(Constructive和Deconstructive)按在类方法中译为构建拆分。Constructive方法用来创建一个moviclip holder用来承载你所附加的字体断段,并且要把它们以单个字符的形式显示出来。而deconstructive就更简单一些,因为它针对moveclip holder工作,并对constructive方法返回的结果应用我们想要的效果。
   下面就让我们开始试一下。首先先下载the TextScript class并将它保存在你所设置的类路径下。如果你没有设置类路径,你可以在flash中按下ctrl+u.在左边选择择actionscript然后在下面选择as2.0设置。把你存放此类的路径添上即可。(译者:如果你不添路径也可以,只要保证你的fla文件在TextScript路径也可,只要文件能找到类即可,但这种方式对于日后的应用会麻烦一点。)

下一步,在flash8中创建一个新的fla文件,选择字体工具,在场景中拖动创建一个动态文本框.它不需要实例名称。我们要做的只是要嵌入字体,注意如果你没有嵌入字体,你的字体效果是不会显示出来的。
选择动态文本框,然后选择一种字体,不要选择非系统字体如_sans,_serif或_typewriter等字体。如我们的例子,使用的是Arial Black加粗字体。 如果你要使用加粗字体,在对文本框设置时一定要它显示出为粗体字样。然后点击右边的”embed”选择你要嵌入的字符范围,点击ok。

现在将下面的代码加入到你的时间线的第一帧上。
如下代码:
代码:

import com.actionscript.text.TextScript;

var myFormat:TextFormat = new TextFormat();
myFormat.font="Arial Black";
myFormat.bold = true;
myFormat.size = 22;
myFormat.color = 0x550000;

var phrase:String = "Dynamic Effects with TextScript";
var xLoc:Number = 50;
var yLoc:Number = 70;
var delay:Number = 3;

m = TextScript.blurIn(this, phrase, xLoc, yLoc, myFormat, delay);

测试你的影片,你应能看到非常漂亮的模糊字体效果出现,如果你没能看到字体体效果出现,请你先确何你的字体是否已正确的嵌入到flash中。如果你使用了粗体。要确保在你选中文本框时, 粗体的B是按下去的。
在这段代码中,我们需要在开始的位置导入TextScript类,然后我设置我们想要显示的字体段落,并通过创建字体格式Textformat来格式化字体。最后我们设置constructive方法所需要的参数。
所有constructive方法都需要下面所列的参数。如下:
TextScript.constructiveMethod(scope,phrase,xLoc,yLoc,textFormat,delay);
Scrop:MovieClip – 你所要展示的文本所放的地方。也就是在哪个movieclip中。
Phrase:String – 你所要展示的文本内容。
xLoc:Number –展示文本所在movieclip中的_x位置
yLoc:Number --展示文本所在movieclip中的_x位置
textFormat:TextFormat –TextFormat对象,用于设定文本属性
delay:Number –出现在场景中字符之间的延时,以帧数为计数单位
Constructive方法总是返回包含你文本的movieclip的实例,你通常应将它保存在一个变量中(我把它命名为”m”)因为在后面你可以使用它来做为deconstructive方法的一个参数。

作为一个名称习惯,所有的deconstructive方法都以”remove”字样开头加上原有的constructive方法名称。因些如constructive方法名为”blurin”,那么它的deconstructive方法的名称就应用removeBlurin.但是它并不是一定要使用这种组合应用在deconstructive方法,任何的constructiv和deconstructive方法组合都可以创建出有效的效果来。
根据我们上面的例子,加入下面的代码:
代码:

onMouseUp = function() {
   TextScript.removeBlurIn(m, delay);
}

现在测试你的影片,你会看到你的字体模糊的出现,然后单击clear按钮,你会发现字体在消失。
演示文如下:

更深一步,如果你打开debugger面板,你就会发现TextScript deconstructive方法清除了所有在constructive方法中创建的元素。
内置在TextScript中的constructive方法如下:
typewriter  打字机效果
zoomIn    放大效果
zoomOut   缩小效果
blurIn      模糊效果
dropIn     下落效果
randomDropIn  随机下落

相应的deconstructive方法如下:
removeTypewriter   移除打字机效果
removeZoomIn     移除放大效果
removeZoomOut   移除缩小效果
removeBlurIn      移除模糊效果
removeDropIn     移除下落效果
removeRandomDropIn  移除随机下落效果

上面这些方法已经可以创建出足够好的效果,但在这个类中相对来说包含了很少的效果,实际上这个类可以创建出任何你想要的效果,你需要仔细查看这个类,这一节中我们将研究如何自定义字体效果。

第二节自定义字体效果

在这一节中我们学习如何自定字体效果,并提供了三个范例,在一个字体效果中,将动画中的每一个字符当做是一个元件符号(一个独立具有指定行为的元素),要创建一个字体效果,你不能对整个文本段落进行代码编写,你需要针对一个独立的字符进行代码编写。
关于TextScript 元件你需要了解6件事情:
§在字体动画中每一个字符就是一个元件。
§每个元件是一个movieclip,它具有所有movieclip的所有功能定义。
§元件具有一个属性命名为framCount,当一个新的效果应用于它时它的初值为0.
§元件具有称为delay的属性。当动作执行之前这个元件需要延迟出现的帧数间隔
§效果代码附加在元件的onEnterFrame事件中,覆盖元件的onEnterFrame事件将会覆盖它的效果动作。
§在constructive效果中(也就是场景中出现字的效果),所有元件以它们最终的位置和缩放出场,所以你可以在动画之前保存他们的这些变量。

Constructive效果

       在前面一节的TextScript文章中,constructive效果是在场景中创建的文本效果,Constructive 效果总是返回movieclip实例,并且这个movieclip中承载着所有字符元件,我们可以使用返回的这个movieclip做为deconstructive效果的一个参数来从场景中移除它。

     自定义constructive方法我们称之为”createEffect”,它的参数类似于内置在类中的constructive函数,只是增加了一个或多个参数在结尾处(也就自定义的函数).它的参数如下:
代码:

TextScript.createEffect(
     scope:MovieClip,
     phrase:String,
     x:Number,
     y:Number,
     textFormat:TextFormat,
     delay: Number,
customEffect:Function);


简单的打字效果:

如下演示效果:

一种简单的效果就是创建打字效果,要创建这种效果,我们将编写些效果的函数并将其附加在字符元件上。如下代码:
代码:

typeOn = function() {
  if(this.frameCount++ > this.delay) {
    this._visible = true;
    this.onEnterFrame = undefined;
  }
}

在打字效果中(查看源文件sample1),typeon函数附加在元件的onEnterFrame事件中,第二行是最重要的一行如下:if(this.frameCount++>this.delay)-这一行不断的增加帧数并且如果帧数超过了在TextScript类所设计的delay属性值( delay的间隔时间也是以帧数为单位的),那么元件就会知道它可以开始执行动作了,在此例中的动作是把每个元件字符显示出来并清除掉onEnterFrame动作。
此效果的所有代码:

代码:

import com.actionscript.text.TextScript;

var tf:TextFormat = new TextFormat();
tf.font="Arial Black";
tf.bold = true;
tf.size = 36;
tf.color = 0x55FF55;

typeOn = function() {
  if(this.frameCount++ > this.delay) {
    this._visible = true;
    this.onEnterFrame = undefined;
  }
}

var frameCounter:Number = 0;
this.onEnterFrame = function() {
    if(frameCounter++ % 50 == 0) {
        m.removeMovieClip();
        m = TextScript.createEffect(this, "Hello World!", 50, 10, tf, 2, typeOn);
    }
}


旋转效果:

演示效果:

这个效果仍是使用我们上面范例的方式,通过frameCounter的值来检验字符元件是否要开始动作,一旦frameCounter值超过delay值,字符元件就开自身旋转180度并且可见,然后覆盖onEnterFrame事件来动画自身旋转回初始位置。(查看源文件sample2)
代码:

rotateIn = function() {
  if(this.frameCount++ > this.delay) {
    this._rotation = -180;
    this._visible = true;
    this.onEnterFrame=function() {
      this._rotation += 10;
      if(this._rotation >= 0) {
        this._rotation = 0;
        this.onEnterFrame = undefined;
      }
    }
  }
}

sample2全部代码:
代码:

import com.actionscript.text.TextScript;

var tf:TextFormat = new TextFormat();
tf.font="Arial Black";
tf.bold = true;
tf.size = 36;
tf.color = 0x55FF55;

rotateIn = function() {
    if(this.frameCount++ > this.delay) {
        this._rotation = -180;
        this._visible = true;
        this.onEnterFrame=function() {
            this._rotation += 10;
            if(this._rotation >= 0) {
                this._rotation = 0;
                this.onEnterFrame = undefined;
            }
        }
    }
}

var frameCounter:Number = 0;
this.onEnterFrame = function() {
    if(frameCounter++ % 70 == 0) {
        m.removeMovieClip();
        m = TextScript.createEffect(this, "Hello World!", 50, 10, tf, 2, rotateIn);
    }
}



Deconstructive 效果

      Deconstructive效果是从场景中移除掉字符元件。它的方法名称为”removeEffect”.作为参数,它需要一个movieclip(这个movieclip是由constructive 方法生成的)和Delay(两个字符元件动作之间的帧数间隔)还有我们自定义的效果。如下:
代码:

TextScript.removeEffect(m:MovieClip, delay:Number, effect:Function);


关于字体元件更多的一些内容:
    §元件有一个特殊的方法称为remove.它用常用来替代removeMovieClip,用来从场景中移除字符元件。它允许上一级movieclip收集所有的不用的元素并且清除掉

淡出效果:

演示效果:

     编写deconstructive效果非常类似于编写constructive效果,当一个deconstructive效果被应用,所有的字符元件都会将它的frameCounter属性值设置为0.因此我们可以开始我们的下一行代码,以决定什么时候再次让它动起来。
如下代码:
代码:

fadeOut = function() {
  if(this.frameCount++ > this.delay) {
    this.onEnterFrame = function() {
      this._alpha -= 10;
      if(this._alpha <= 0) {
        this.remove();
      }
    }
  }
}

这个效果是等待frameCounter值超过delay.然后覆盖它自身的onEnterFrame事件在每一帧上减少alpha值直到它不可见,最后字符元件调用remove将其从内存中移出。查看源文件sample3.
全部代码:
代码:

import com.actionscript.text.TextScript;

var tf:TextFormat = new TextFormat();
tf.font="Arial Black";
tf.bold = true;
tf.size = 36;
tf.color = 0x55FF55;

fadeOut = function() {
  if(this.frameCount++ > this.delay) {
    this.onEnterFrame = function() {
      this._alpha -= 10;
      if(this._alpha <= 0) {
        this.remove();
      }
    }
  }
}

var frameCounter:Number = 0;
this.onEnterFrame = function() {
    if(frameCounter++ % 65 == 0) {
        m.removeMovieClip();
        m = TextScript.createEffect(this, "Hello World!", 50, 10, tf, 2, function(){});
        //下面的代码是轮询出每一个字符元件,因为我们没有给出constructive方法(如上例中方法为function(){},前没有给出具体的constructive方法)我们需要让它们都可见,以便显示出来destructive方法。
        for(var i in m) {
            m._visible = true;
        }
        TextScript.removeEffect(m, 2, fadeOut);
    }
}

附加演示文件:


深入:

当使用TextScript创建字体效果时,记住你使用的都是movieclip的强大功能。你可以改变字体的色彩,应用滤镜和融合效果,重建复杂的物理效果,并且不要忘记也可以使用声音或其它媒体。这个类编写的相对比较简单,但是它的伸缩性很强,加上你的一点点创意,你应能创建出更有趣的效果来。你可以在TextScript类中查看切换效果函数(从类的第108行开始).它们是内置的createEffect和removeEffect方法。如果你创建出的很酷的效果,不要忘记分享啦。J

egoldy提示:在做中文体效果时,我们同样需要嵌入字体,如上面范例制作时嵌入的“方正简美黑”,但大家可能会担心会变大,这是肯定的,如果制作很长的段落是不合适的,用于制做文字不是很多的内容还是很合适的,在上面的范例中如我使用的文本为” 欢迎来到webstudio”那么在嵌入字体时只需要将这一行字嵌入就可以了,这样每个文件并不会超过10k.同样也会满足我们的大多数需求。Cheers J..

全部源文件下载
发布于 2006年3月22日 9:54   由 心没了   有 0 篇评论
个性化网站收藏小图标的做法
个性化网站收藏小图标的做法
个性化自己的网站收藏小图标的做法,只对 Windows平台的 IE 5.0 或者更新版本的浏览器才有效.

1。自己制作一个ico图标,大小最好为16x16 像素,文件名假设为favicon.ico
2。把刚刚制作好的 favicon.ico 文件上传到你的网站根目录去。如果你的网址是:http://duwei18.126.com 那么你的 favicion.ico 就应该被放在下面这个 URL下http://duwei18.126.com/favicion.ico

3。在网页中加入代码:譬如
<HEAD>
<LINK REL="SHORTCUT ICON" HREF="http://duwei18.126.com/ favicion.ico ">
<TITLE>一起走过的日子</TITLE>
</HEAD>
发布于 2006年3月14日 10:32   由 心没了   有 0 篇评论
 Danger Video Player 1.0 发布

这是一个可定制播放列表的 Flash 视频播放器.
你可以将它放到你的站点或 Blog 上使用,完全免费!!!
支持网上所有的 Flash 视频(FLV格式)(只要你知道地址就行了)

使用方法请查看readme文档,以后的更新都在这个主题中.不再建新主题.
预览 | Danger Video Player 1.0 下载

目前几个流行的 Flash 视频站是:
(你可以上传自己的视频,他们会帮你自动转换成Flash视频FLV)
1,vlog.im.tv
2,Youtube.com
3,Google Video

1,Vlog 视频地址很好找:
例如这个地址:
http://www.im.tv/vlog/personal.asp?Memid=247205&FID=93873
FID参数值就是视频文件名,下载视频就在:
http://myvlog.im.tv/flv/93873.flv

2,Youtube视频:
http://www.youtube.com/watch?v=ScafPmcpv0c
V参数值就是视频文件名,如下:
http://www.youtube.com/get_video?video_id=ScafPmcpv0c

3,Google Video 目前国内看不了,相信以后会好的.

发布于 2006年3月11日 9:56   由 心没了   有 1 篇评论
职场:成功人士的五点共性
数年里,我采访了美国中国数百位企业精英,他们精彩的故事让我生命多活几圈,他们是优点与缺点极端得不能再真实的人,那么他们到底是一群什么样的人呢?

  共性一:他们是一群充满孤独的人:就是因为他们不合群,所以才看到别人看不到的机遇和内容,甚至导致一些人不得不早期下海独闯天下。即使他们的朋友遍天下,然而孤独是他们的选择,不仅因为高处不胜寒的地位,更是由于精神境界中更高的渴望与探索。

  共性二:他们是一群充满危机的人:因为追求成功,甚至追求完美,让他们永不满足,永不平安。新经济下游戏规则的变化,WTO的进入,适者生存的压力,只能上不能下的文化,让许多成就人承担更大的危机感。

  共性三:他们是一群充满天真的人:当别人问“为什么”时,他们总要说“为什么不?”;当别人离开时,他们永不言弃;当没有人做时,他们却痴痴地拿起。不做怎么知道不可能?不尝试失败之前怎么就可以放弃?成功与否不是绝对的重要,参与的过程已经是希望的开始。

  共性四:他们是一群让你无法复印的人:如果成功可以复印,那么成功加工厂早就建立了。技巧可以学习,但是机智与嗅觉,无法传授,如果你跟在别人后面模仿时,新的商机与市场模式已经变了。假如课堂上睡觉的你被教授突然叫起回答问题,原本已经尴尬的你,是腥洗砦螅故窍裉┤蛔匀舻囊晃籈MBA的学员这样回答:“刚才大家讲的话我都同意,并且没有补充。”

  共性五:他们是一群与你同享成就的人:很多人不理解我说的分享成就,这个分享不是等着分享成果,而是真正用心来拥抱、欣赏,鼓励对方。为何分享成就这么重要?与你共患难并不难,因为其间你不会给其他人带来威胁。但是,你成就的时刻,往往使许多人感受到更大的自卑和危机,如果没有一个超然的境界和健康的心态,对方是很难真诚面对你,为你的成就而由衷欣慰的。当你愈往高走,愈需要阳光的朋友,不是成果的瓜分,而是精神世界的共享,这是没有成功心态的人,无法抵达的境界。

发布于 2006年3月11日 9:42   由 心没了   有 0 篇评论
FLASH与后台数据交换方法整理

P.S
最近有一些网友总是询问flash与后台数据交互的问题,因此我就做了一些总结和整理,也想方便大家了!
目前据我所知,Flash与后台数据交互共有下列几种方法(如果你觉得不全,你可告知一下,我会添加上去了):
1.LoadVars(XML)
2.Flash Remoting
3.Webservice
4.XMLSocket

一.LoadVars篇
我之所以把XML也放在这里说,是因为XML和LoadVars数据交互的方式大体相同,就是传递时的数据内容有点不一样而已!
我现在列出在开发过程最常用的"用户密码验证"实例,加以说明!
//=====================================================;
// Flash代码;
//=====================================================;
//定义LoadVars对象;
var data_lv = new LoadVars();
//提交的用户名变量和参数值;
data_lv.username = "kinglong";
//提交的密码变量和参数值;
data_lv.password = "king";
//提交后返回结果;
data_lv.onLoad = function(success){
//success,数据提交是否成功;
//这个只是表示数据传输是否成功,并不是用户验证的结果;
if(success){
trace("数据提交成功!");
//result也是用户验证返回的实际结果!
if(this.result=="true"){
trace("yes");
}else{
trace("no");
}
}else{
trace("数据提交失败!");
}
}
//数据提交方法调用;
//第一参数就是提交的页面地址;
//第二参数就是返回结果对象(只要是LoadVars对象就可以了);
//第三参数就是提交方式(这个和html中form表单类似,分为"post"和"get"两种方式)
data_lv.sendAndLoad("http://www.klstudio.com/save.asp",data_lv,"post");
//=====================================================;
//后台服务端页面处理及返回内容;
//=====================================================;
//接收flash提交过来的变量和接收一个页面提交过来的变量一致的;
Request("username") 就是flash端username变量传过来的值"kinglong";
Request("password") 就是flash端password变量传过来的值"kinglong";
....数据库验证.....
//如果用户验证通过
&result=true
//如果用户验证失败
&result=false
//整个页面返回内容就是上面那一行内容,&result对应用着flash端的result变量;
//如果是多个返回值的话,就是&result=xxx&result1=xxx这种形式就可以了;

如有不清楚的地方,你可查看flash帮助文档!
至于XML的方式,请对应地查看flash帮助文档就可以了!
LoadVars方式的优点:
1.flash代码实现起来简单,方便.
2.服务端接收页面和接收一个表单过来的数据一样处理,不需要专门的技术,所有服务端程序都可以实现!

LoadVars方式的缺点:
1.传递的变量不宜过多.
2.变量传递的值不能过长.
3.变量传递值只能使用"字符串"这一种数据类型,数据类型单一.
4.数据返回值当中不能有"&"字符,因此比较复杂的返回值都需进行URL编码处理.
下次就再整理一下Flash Remoting的相关方法

二、Flash Remoting
Flash Remoting这种数据接口是四个之中效率最高的!
其优点:
1.支持数据类型比较多(Converting from application server data types to ActionScript);
2.传递数据量比较大;
3.运行效率是现有几个当中最高的;
4.对各种后台的支持也比较好;
5.其还有调试模块(NetConnection Debugger)

其缺点
1.需要flash端装Flash Remoting MX Components(这个是免费提供的);
2.需要后台服务端装相应版本的Flash Remoting模块才可以使用,MM提供的模块有j2ee和.net两个版本是要收费的,好在网上还有两个开源的(OpenAMF,AMFPHP);
3.好像Remoting对虚拟主机的支持不太好(可以去google搜索一下,有没有解决方法).

//=====================================================;
//Flash端代码说明:(我这里用as1.0版本为例,其他版本到MM站查找)
//=====================================================;
//加载Remoting Component代码,这个是必须的;
#include "NetServices.as"
//加载Remoting 调试模块代码,这个是可选择的,用NetConnection Debugger查看调试信息;
#include "NetDebug.as"
if (inited == null){
inited = true;
//设置默认网关;
NetServices.setDefaultGatewayUrl("http://localhost:8500/flashservices/gateway");
//建立网关连接;
gateway_conn = NetServices.createGatewayConnection();
//获取一个服务;
myService = gateway_conn.getService("myservice", this);
}

//定义调用方法的函数;
function getString(name){
//调用Remoting的getString方法;
myService.getString(name);
}
//定义返回结果的函数;
function getString_Result(result){
//result就为返回的结果;
trace(result);
}
//定义返回状态的函数,此为可选的;
function getString_Status(error){
trace("getString_Status");
trace(error.code);
trace(error.description);
trace(error.details);
}

//调用函数;
getString("kinglong");



//=====================================================;
//服务端方法定义(我这里以Coldfusion Component为例,其他版本请参考相应的资料)
//=====================================================;
<!---文件名为myservice.cfc--->
<cfcomponent displayname="我的服务">
<!---定义了getString方法,需将access设为remote,否则Flash remoting无法调用此方法--->
<cffunction name="getString" access="remote" returntype="string">
<cfargument name="name" type="string" required="true">
<cfset myResult = arguments.name & ",欢迎你!">
<cfreturn myResult>
</cffunction>
</cfcomponent>

另附上Flash Remoting的在线帮助文件(Flash Remoting LiveDocs),MM网站上的Remoting相关的资料.

发布于 2006年3月7日 11:44   由 心没了   有 0 篇评论
FLASH + XML 求职简历 制作教程(一)
前几天一个朋友介绍了一家公司。结果发现自己少了三样东西:简历、技术性强的作品、自信。于是想做个“技术性强的简历”。这样也能有些底气,多些自信。在别人问我懂不懂OOP的时候,就不用说“学是学过,没做过”了。   先把学习过的AS2.0面向对象编程重新过一遍消化吸收,然后用两天时间做了这个简历。照例提供源文件下载。第一次“OOP”,写到最后代码有点乱了。   这两天写代码写到头痛。借一本书上的话:“编程对很多人来说是一件很枯燥、很难的事情,当把它当成一种强烈的兴趣时,编程便是一件非常有趣的事情。”当调试半天的bug终于解决当复杂功能终于实现的时候,那种喜悦绝对是一种享受。   这喜悦对我来说太过奢侈。我憎恶现在的教育制度,让我把时间全浪费在毫无兴趣更无用处的东西上,憎恶如此看重文凭的病态的社会让我不得不对自己的憎恶俯首称臣!
发布于 2006年3月7日 10:14   由 心没了   有 0 篇评论
伤感!~虫哥要离开厦门了.
  虫哥从我来闪吧虫哥就非常的照顾我.直到我来到厦门也是一样.他就要离开厦门了.不知道应该说什么.自己很难过.旧公司一直没有发工资.害我都没有办法请虫哥请喝.晚上也只好请吃点小抄什么的.虫哥做人真TM厚道.能在网络上认识这样的朋友也不往我来厦门一次了.希望虫哥在以后的日子可以过的很好.特别是在非州.别忘记代个黑妹妹让哥们开开眼界.矜持而已.从此闪吧失去了一个好的板主.中国又少了一个厚道的银.至.衰....还有什么感受等虫哥走了后再说不然被他看到又说我扇情了.其实我没有.
发布于 2006年3月2日 17:06   由 心没了   有 31 篇评论
[设计公司]是什么让你失去客户?
时间嘎吱一声就到了年底,想想无论多繁忙都要给之前的老客户发个问候,安排公司做点贺年卡什么的,客户当然就自己来统计了。
发布于 2006年3月1日 10:08   由 心没了   有 0 篇评论
MC HotDog_熱狗的VLOG

超喜欢热狗他太个性了.

http://www.im.tv/vlog/personal.asp?Memid=234273

发布于 2006年2月24日 10:30   由 心没了   有 0 篇评论
日本AV女优的BLOG

日本AV女优的BLOG
现在就连电脑白痴也能设立自己的网站,开始blog,完全不需要一丁点的电脑知识。
所以并不惊讶网上论坛找到整份日本AV女优的blog list,毕竟她们也有自己的生活,并不是成天拍AV。
可恨的是。。。我并不会看日文!

几个比较熟悉的名字  (其余的自己下面找找看吧)
あかねっと ぶろぐ ~桜朱音~ blog.livedoor.jp/s_akanet/
本城さゆりのBlogだよ blog.livedoor.jp/qaz1235/
松島かえでのブログ日記。 blog.livedoor.jp/matsushimakaede/


蓮美ゆい★LOVE SMILE ALWAYS yui8.livedoor.biz
鈴木麻奈美公式ブログ www.ionpromotion.net/blog/suzuki/
夢野まりあの日記帳 blog.livedoor.jp/yumenomaria/
北川?#125;美の Happy★Diary blog.livedoor.jp/kitagawaemi/
宝月ひかるのHIKAROOM blog.livedoor.jp/momoblog/
片瀬茉莉奈公式ブログ www.ionpromotion.net/blog/katase/
浜ひとみ公式ブログ www.ionpromotion.net/blog/hitomi/
乃亜 fashionable but Eroi blog.livedoor.jp/sodnoa/
灘ジュン公式ブログ www.ionpromotion.net/blog/nada/
奈々の秘密日記 http://nanadiary.seesaa.net/br />
桃咲あいのハート日記 blog.livedoor.jp/momosakiai/
滝沢優奈公式ブログ www.ionpromotion.net/blog/takizawa/
早咲まみ公式ブログ www.ionpromotion.net/blog/hayasaki/
早乙女みなきのSweet☆KissDiary minaki1.livedoor.biz
泉 星香さまのブログ登場! seika1.livedoor.biz
西野さゆきの舞ログ PART2 nishinosayuki.cocolog-nifty.com/chu/
西田美沙公式ブログ www.ionpromotion.net/blog/nishida/
水希遥の心の音 blog.goo.ne.jp/haruka19love
神谷姫公式ブログ www.ionpromotion.net/blog/kamiya/
小嶺春(こみねはる)さまブログ blog.livedoor.jp/akane77/
持田茜公式ブログ www.ionpromotion.net/blog/mochida/
桜田さくらのブログだよ? blog.livedoor.jp/sakurada8/
金沢文子公式ブログ www.ionpromotion.net/blog/kanazawa/
夏目ナナのレインボー日記 blog.livedoor.jp/natsumenana/
安田みずほ公式ブログ www.ionpromotion.net/blog/yasuda/
愛音の日記ちゃん? http://aine4.livedoor.biz/
ゆんちゃんだもんね plaza.rakuten.co.jp/yun293/
籐あきの何でもアップロード www.ionpromotion.net/blog/aki/
みゆりのお部屋 blog.livedoor.jp/miyuri1/
まつもとありさ(松本亜璃沙) blog.livedoor.jp/arisa4/
ヒナァヅ ワァルド plaza.rakuten.co.jp/hinazou1982/
ヒカルンバ☆ blog.livedoor.jp/hikarumba/
寧々のちょっとHな出来事 blog.livedoor.jp/nene_blog/
西野翔のSHOW ROOM Blog blog.livedoor.jp/nishino_shou/
南波杏ブログ www.ionpromotion.net/blog/nanba/
ドリームチケット 専属AV女優 葉山リカ blog.livedoor.jp/hayama_rika/
デヴィな日々~ blog.livedoor.jp/devi3/
チョーキョーされ日記 www.ionpromotion.net/blog/mizusawa/
ちさきのでろころ写真日記 blog.livedoor.jp/derokoro8888/
?#125;まことのCUTEな日常 blog.livedoor.jp/hijiri_macoto/
さいとう真央ダイアリー blog.livedoor.jp/sod_mao/
今野由愛オフィシャルブログ www.ionpromotion.net/blog/yume/
今日のSOLA模様 blog.livedoor.jp/aoi_sola/
Willcorporation Girls blog.willcorporation.com/girl/
UEHARA RUKA’S DIARY blog.livedoor.jp/uehara_ruka/
Sakura Siratori Official BLOG belles.beblog.jp/saku/
Rio de Janeiro★ blog.livedoor.jp/rio9/
Rio Blog blog.livedoor.jp/rio_akikawa/
CHACO★CHACO DIARY blog.livedoor.jp/sod_chaco/
***’s love days blog.drecom.jp/hinazo/
AYA’s Room  blog.livedoor.jp/aya_mizuki/
AV女優★明乃夕奈★のほちょほちょBlog blog.livedoor.jp/yuunaakarino901/
akiho.net blog.livedoor.jp/akihonet/
☆★☆さくら葵 pinky flower☆★☆ blog.livedoor.jp/aoi_sakura/
◆◇◆◇まりもの写真日記◆◇◆◇ blog.livedoor.jp/asoumarimo/
*楓 アイル maple tree…in 『AIRU』* blog.livedoor.jp/airu_kaede/

发布于 2006年2月24日 10:22   由 心没了   有 0 篇评论
好可爱的女生.看看她的VLOG吧.

http://www.im.tv/vlog/personal.asp?Memid=228115

发布于 2006年2月24日 10:20   由 心没了   有 0 篇评论
具有亲和力的表格
翻译自:A CSS styled table 原文:http://veerle.duoh.com/comments.php?id=315_0_2_0_C 版权归原作者所有这个翻译的页面版权所有,授权蓝色理想。转载请注明出处

在前一段时间制作了CSS calendar,然后我就想用css制作一个table的模型,该模型遵循亲和力规则,而且有良好的视觉效果.

图:颜色的选择和搭配

这样做的好处是: 利用表格来装载数据,不言而喻是最好的,你可以很灵活的为每个单元格定义样式。下面是具体的做法

首先在photoshop设计一个效果出来,通过对各种颜色,小图标等的常识,做出了一个效果令人满意的效果图来。下一步呢,裁处下面三个图片来作为标题的背景图片,如果你对颜色的把握不是很好的话,这里给你提供一些调色工具

www.snook.ca/technical/colour_contrast/colour.html

veerle.duoh.com/comments.php?id=108_0_2_20_C8

数据结构为

<table id="mytable" cellspacing="0" summary="The technical
specifications of the Apple PowerMac G5 series">
<caption>Table 1: Power Mac G5 tech specs </caption>
<tr>
  <th scope="col" abbr="Configurations" class="nobg">Configurations</th>
  <th scope="col" abbr="Dual 1.8GHz">Dual 1.8GHz</th>
  <th scope="col" abbr="Dual 2GHz">Dual 2GHz</th>
  <th scope="col" abbr="Dual 2.5GHz">Dual 2GHz</th>
</tr>
<tr>
  <th scope="row" class="spec">Model</th>
  <td>M9454LL/A</td>
  <td>M9455LL/A</td>
  <td>M9457LL/A</td>
</tr>
...

可以看到我用了scope 属性来确保这个表格在无视觉效果的浏览器下展示出更好的效果,这个属性定义标题元素包含的标题内容是否为 行 (scope="col") 或 列(scope="row") 。下面是CSS的内容对于上面的标题,使用和背景来更好的区分出他们

th {
font: bold 11px "Trebuchet MS", Verdana, Arial, Helvetica,
sans-serif;
color: #6D929B;
border-right: 1px solid #C1DAD7;
border-bottom: 1px solid #C1DAD7;
border-top: 1px solid #C1DAD7;
letter-spacing: 2px;
text-transform: uppercase;
text-align: left;
padding: 6px 6px 6px 12px;
background: #CAE8EA url(images/bg_header.jpg) no-repeat;
}

th.nobg {
border-top: 0;
border-left: 0;
border-right: 1px solid #C1DAD7;
background: none;
}

下面定义左侧的标题样式

th.spec {
border-left: 1px solid #C1DAD7;
border-top: 0;
background: #fff url(images/bullet1.gif) no-repeat;
font: bold 10px "Trebuchet MS", Verdana, Arial, Helvetica,
sans-serif;
}

th.specalt {
border-left: 1px solid #C1DAD7;
border-top: 0;
background: #f5fafa url(images/bullet2.gif) no-repeat;
font: bold 10px "Trebuchet MS", Verdana, Arial, Helvetica,
sans-serif;
color: #B4AA9D;
}

这里的数据来自于MAC的technical specifications of each Power Mac G5|http://www.apple.com/powermac/specs.html下来定义普通的和重要的数据内容

td {
border-right: 1px solid #C1DAD7;
border-bottom: 1px solid #C1DAD7;
background: #fff;
padding: 6px 6px 6px 12px;
color: #6D929B;
}

td.alt {
background: #F5FAFA;
color: #B4AA9D;
}

至此,整个制作过程结束了

查看表格效果

查看CSS文件

译者的话:这个页面经我测试通过W3C标准严格型验证,而且兼容IE,Firefox,Opera等主流浏览器,对于大量数据,可以利用js实现行两种背景交替显示。

发布于 2006年2月18日 14:39   由 心没了   有 0 篇评论
仿dw8代码折叠功能的HTML编辑器

测试版(仅支持ie5.5+,且一个页面里只能放一个)
收集意见

功能:
1.动态分析,智能折叠,ctrl+Enter强制重建
2.tab键输出两个空格(若选区为多行,各行前加入两空格,同时按shift键反之),Ctrl+T替换\t为俩空格
3.回车自动缩进
4.Ctrl+W预览

限制:
1.取消了右键菜单(复制剪切粘贴可使用键盘)
2.暂不支持文本拖放
3.Ctrl+Z将撤销所有操作
4.块起止测试并不严格,且未考虑vbscript
5.运行效率有待改进

引用地址:http://www.blueidea.com/bbs/newsdetail.asp?id=2395282&page=1&posts=&Daysprune=&lp=

<style> body{ text-align:center; } #oTxt,#oBox{ height:440px; border:none; border:1px solid #666666; } #oTxt{ width:740px; color:#333333; background-color:#f0f0f0; font-family:verdana; font-size:11px; line-height:13px; margin-left:16px; overflow:auto; border-left:none; scrollbar-arrow-color:#666666; scrollbar-base-color:#666666; scrollbar-darkshadow-color:#f0f0f0; scrollbar-face-color:#f0f0f0; } #oBox{ position:absolute; width:15px; overflow-y:hidden; background-color:#e0e0e0; padding-top:1px; margin-top:1px; padding-bottom:19px; border-right:none; } </style> <script> /* 测试版(仅支持ie5.5+,且一个页面里只能放一个) 收集意见 功能: 1.动态分析,智能折叠,ctrl+Enter强制重建 2.tab键输出两个空格(若选区为多行,各行前加入两空格,同时按shift键反之),Ctrl+T替换\t为俩空格 3.回车自动缩进 4.Ctrl+W预览 限制: 1.取消了右键菜单(复制剪切粘贴可使用键盘) 2.暂不支持文本拖放 3.Ctrl+Z将撤销所有操作 4.块起止测试并不严格,且未考虑vbscript 5.运行效率有待改进 */ window.onload=function(){ oBox.mLine="http://free.txd.cn/mozart0/img/line.gif"; oBox.mPlus="http://free.txd.cn/mozart0/img/plus.gif"; oBox.mMinus="http://free.txd.cn/mozart0/img/minus.gif"; oBox.mEnd="http://free.txd.cn/mozart0/img/end.gif"; oBox.isPlus=function(o){ return /plus\./.test(o.src); } oBox.isMinus=function(o){ return /minus\./.test(o.src); } oBox.isLine=function(o){ return /line\./.test(o.src); } oBox.isEnd=function(o){ return /end\./.test(o.src); } oBox.childrenVisible=function(index){ var t=this.children[index]; while(t.style.display=="none") t=t.nextSibling; var x=t.offsetTop/t.height; while(x<index){ t=t.nextSibling; if(t.style.display!="none") x++; } return t; } oBox.hideBlock=function(index){ var n=1,x=1; var c=this.children; c[index].src=this.mPlus; while(++index<c.length&&n){ var t=c[index]; if(t.style.display!="none"){ x++; t.style.display="none"; } if(this.isEnd(t)) n--; else if(!this.isLine(t)) n++; } return x; } oBox.showBlock=function(index,b){ var index0=index,c=oBox.children; c[index].src=b?this.mMinus:this.mPlus; c[index].style.display="block"; index++; if(b) while(index<c.length){ var t=c[index]; if(this.isLine(t)){ t.style.display="block"; index++; } else if(this.isEnd(t)){ t.style.display="block"; break; } else index+=this.showBlock(index,this.isMinus(t)) } else{ var n=1; while(index<c.length){ var t=c[index]; t.style.display=="none"; if(this.isEnd(t)){ if(--n==0) break; } else if(!this.isLine(t)) n++; index++; } } return index-index0+1; } oBox.refresh=function(o,str){ o.src=this.judge(str); o.storeText=str; } oBox.judge=function(s){ var l=/\{/.test(s),r=/\}/.test(s); if(l&&!r) return this.mMinus; if(!l&&r) return this.mEnd; s=s.replace(/<(\w+).*<\/\1>/g,"<$1/>"); l=/^\s*<\w+[^\/]+[>\r]/.test(s); r=/\/>/.test(s); if(l&&!r) return this.mMinus; r=/<\/\w+>/.test(s); if(r) return this.mEnd; return this.mLine; } oBox.onclick=function(){ var o=event.srcElement; if(o==this) return; var vIndex=(o.offsetTop-1)/oTxt.lineHeight; var index=vIndex; var t=this.children[vIndex]; while(t!=o){ t=t.nextSibling; index++; } if(this.isMinus(o)) oTxt.hideLines(vIndex,this.hideBlock(index)); else if(this.isPlus(o)) oTxt.showLines(vIndex,this.showBlock(index,true)); oBox.scrollTop=oTxt.scrollTop; } oTxt.lineHeight=13; oTxt.strSpecial="......"; oTxt.regSpecial=/\.{6}\r?$/; oTxt.strTab=" "; oTxt.bFixed=false; oTxt.originalValue=oTxt.value; oTxt.trueValue=function(){ for(var s="",c=oBox.children,i=0;i<c.length-1;i++) s+=c[i].storeText+"\n"; return s+c[i].storeText; } oTxt.lineNumber=function(r){ var t=this.createTextRange(); return Math.round((r.boundingTop-t.boundingTop)/this.lineHeight); } oTxt.rngAtHome=function(r){ var t=this.createTextRange(); return r.boundingLeft==t.boundingLeft&&r.boundingTop==t.boundingTop; } oTxt.rngAtEnd=function(r){ var t=this.createTextRange(); t.collapse(false); return r.boundingLeft==t.boundingLeft&&r.boundingTop==t.boundingTop; } oTxt.hideLines=function(ifrom,n){ var a=this.value.match(/.+/mg); for(var i=1;i<n;i++) a[ifrom+i]=""; a[ifrom]=a[ifrom].replace(/\r/,this.strSpecial); if(ifrom+n<a.length) a[ifrom]+="\r"; this.value=a.join(""); } oTxt.showLines=function(ifrom,n){ var a=this.value.match(/.+/mg); var t=oBox.childrenVisible(ifrom).nextSibling; for(var s="",i=0;t&&i<n-1;i++,t=t.nextSibling) if(t.style.display!="none"){ if(!oBox.isPlus(t)) s+=t.storeText; else s+=t.storeText.replace(/\r?$/,this.strSpecial+"\r"); } a[ifrom]=a[ifrom].replace(this.regSpecial,"\r"+s); this.value=a.join(""); } oTxt.ondrag= oTxt.ondrop= oTxt.oncontextmenu=function(){ return false; } oTxt.onscroll=function(){ oBox.scrollTop=this.scrollTop; } oTxt.onkeydown=function(){ if(event.keyCode>=33&&event.keyCode<=40) return true; var r=document.selection.createRange(); var t=oBox.childrenVisible(this.lineNumber(r)); if(!r.text){ if(oBox.isPlus(t)) return false; } else{ var n=Math.floor(r.boundingHeight/this.lineHeight); for(var i=0,t1=t.nextSibling;i<n&&t1;i++,t1=t1.nextSibling) if(t1.style.display=="none") return false; } this.bFixed=false; var k=event.keyCode; if(k==9){ //Tab var r1=r.duplicate(); if(r.boundingHeight>this.lineHeight){ if(!event.shiftKey){ r.text=r.text.replace(/^(.)/mg,this.strTab+"$1"); for(var i=0,t1=t;i<n;i++,t1=t1.nextSibling) t1.storeText=this.strTab+t1.storeText; } else{ var reg=new RegExp("^"+this.strTab,"mg"); r.text=r.text.replace(reg,""); for(var i=0,t1=t;i<n;i++,t1=t1.nextSibling) t1.storeText=t1.storeText.replace(reg,""); } r.setEndPoint("StartToStart",r1) r.select(); this.bFixed=true; } else fix(r,this.strTab); return false } if(k==13){ //Enter if(event.ctrlKey) build(); else{ var r1=r.duplicate(); var x=this.createTextRange(); this.scrollLeft=0; r1.moveToPoint(x.offsetLeft,r.offsetTop); r1.setEndPoint("EndToStart",r); fix(r,"\r\n"+r1.text.replace(/\S.*/,"")); } return false; } if(k==46){ //Del if(!r.boundingWidth){ if(this.rngAtEnd(r)){ this.bfixed=true; return; } r.moveEnd("character",1); } fix(r,""); return false; } if(k==8){ //BackSpace if(!r.boundingWidth){ if(this.rngAtHome(r)){ this.bfixed=true; return true; } r.moveStart("character",-1); } fix(r,""); return false; } if(k==87){ //ctrl+W if(!event.ctrlKey) return true; try{ this.win.navigate("about:blank"); } catch(e){ this.win=window.open("about:blank"); } this.win.document.write(this.trueValue()); this.win.focus(); this.win.document.close(); return false; } if(k==84){ //Ctrl+T if(!event.ctrlKey) return true; this.value=this.value.replace(/\t/g,this.strTab); for(var i=0,c=oBox.children;i<c.length;i++) c[i].storeText=c[i].storeText.replace(/\t/g,this.strTab); oTxt.bFixed=true; return false; } if(k==86){ //Ctrl+V if(!event.ctrlKey) return true; fix(r,clipboardData.getData("text")); return false; } if(k==88){ //Ctrl+X if(!event.ctrlKey||!r.boundingWidth) return true; var s=r.text; if(!s) for(var i=0,n=Math.floor(r.boundingHeight/this.lineHeight);i<n;i++) s+="\r\n"; else{ var r1=r.duplicate(); r1.moveEnd("character",1); if(r.text==r1.text&&r.boundingTop==r1.boundingTop) s+="\r\n"; } clipboardData.setData("text",s); fix(r,""); return false; } if(k==90){ //Ctrl+Z if(!event.ctrlKey) return true; this.value=this.originalValue; build(); return false; } return true; } oTxt.onkeyup=function(){ if(this.bFixed) return; var k=event.keyCode; if(k==32||k>=48&&k<=111||k>=186&&k<=192||k>=219&&k<=222){ var n=this.lineNumber(document.selection.createRange()); oBox.refresh(oBox.childrenVisible(n),this.value.split("\n")[n]); } } function fix(rng,str){ oTxt.bFixed=true; var t0=oTxt.lineNumber(rng); var t1=t0+Math.floor(rng.boundingHeight/oTxt.lineHeight); rng.text=str; rng.select(); var t2=oTxt.lineNumber(rng)+1; var a=oTxt.value.split("\n"); var o=oBox.childrenVisible(t0); if(t1<=t2){ for(i=t0;i<t1;i++,o=o.nextSibling) oBox.refresh(o,a[i]); for(i=t2-1;i>=t1;i--) oBox.refresh(o=oBox.insertBefore(new Image(),o),a[i]); } else{ for(i=t0;i<t2;i++,o=o.nextSibling) oBox.refresh(o,a[i]); for(;i<t1;i++){ var next=o.nextSibling; oBox.removeChild(o); o=next; } } while(oBox.scrollHeight>oTxt.scrollHeight+18){ var next=o.nextSibling; oBox.removeChild(o); o=next; } oBox.scrollTop=oTxt.scrollTop; } function build(){ oBox.innerHTML=""; if(!oTxt.value) return; var a=oTxt.value.split("\n"); for(var i=0;i<a.length;i++) oBox.refresh(oBox.appendChild(new Image()),a[i]); oTxt.bFixed=true; } build(); } </script> <div id=oBox></div> <textarea id=oTxt wrap=off><script> function fix(rng,str){ oTxt.bFixed=true; var t0=oTxt.lineNumber(rng); var t1=t0+Math.floor(rng.boundingHeight/oTxt.lineHeight); rng.text=str; rng.select(); var t2=oTxt.lineNumber(rng)+1; var a=oTxt.value.split("\n"); var o=oBox.childrenVisible(t0); if(t1<=t2){ for(i=t0;i<t1;i++,o=o.nextSibling) oBox.refresh(o,a[i]); for(i=t2-1;i>=t1;i--) oBox.refresh(o=oBox.insertBefore(new Image(),o),a[i]); } else{ for(i=t0;i<t2;i++,o=o.nextSibling) oBox.refresh(o,a[i]); for(;i<t1;i++){ var next=o.nextSibling; oBox.removeChild(o); o=next; } } while(a.length<oBox.children.length){ var next=o.nextSibling; oBox.removeChild(o); o=next; } oBox.scrollTop=oTxt.scrollTop; } function build(){ oBox.innerHTML=""; if(!oTxt.value) return; var a=oTxt.value.split("\n"); for(var i=0;i<a.length;i++) oBox.refresh(oBox.appendChild(new Image()),a[i]); oTxt.bFixed=true; } </script> <center> <h1>Hello world</h1> <hr id="emptyTag"/> <div id="multiLineTag" style="text-align:right;font-size:11px;font-family:tahoma"> by mozart0@2005.12.26<br/> qq76239711<br/> <a href="mailto:mozart0@etang.com">mozart0@etang.com</a> </div> </center></textarea>
发布于 2006年2月15日 10:16   由 心没了   有 0 篇评论
网页设计中的色彩比例
网页设计中的色彩比例
发布于 2006年2月10日 21:01   由 心没了   有 0 篇评论
一个上海白领女孩和海军军官男友的分手信
浪漫需要物质基础 ... ...
发布于 2006年2月9日 20:24   由 心没了   有 12 篇评论
  总页数 5 第 1 页 [共有 62 条记录]   1 2 3 4 5 >