Archive for 'Coding'

Python 学习笔记

关于Python mac 开发环境

尝试过mac python这个简单的开发工具,功能简洁而有限。现在开始使用Aptana Studio 和PyDev,功能变得丰富多了。使用前要在Preference中的Pydev里配置interpreter-python,默认autoConfig可以使用系统默认的python环境,当然可以设定共存的其他环境,我的默认是Python26,路径/usr/bin/python;我另外添加了python25。方法:选择new,然后指定路径:/usr/bin/python2.5,然后就会自动添加好python2.5 interpreter.(如下图:)

e5b18fe5b995e5bfabe785a7-2009-10-09-e4b88be58d88093611

几个路径:

应用程序python路径:

在我的mac系统内,我发现多个python版本的存在,2.3,2.5,2.6都有。可能由于系统内安装的很多应用程序需要python环境,例如maya,nuke,等,这些应用程序的python环境安装在/System/Library/Frameworks/Python.framework,多个版本可共存在Versions里。对应的调用环境路径是:/usr/bin/python或/usr/bin/python2.5等。

这些应用程序的python环境附带了easy_install,安装在/usr/bin里,多个版本可共存,我这里默认的easy_install是对应2.6版本,easy_install-2.5对应的是2.5版本.

easy_install 安装的第三方模块位于:Library/Python/版本号/site-packages 里,例如:Library/Python/2.6/site-packages。

自己单独安装python路径:

下载MacPython环境,系统安装在/Library/Frameworks/Python.framework,多个版本可共存在Versions里;对应的调用环境路径是:/usr/local/bin/python或/usr/local/bin/python2.5等。

安装easy_install:ez_setup.py,安装是在终端里调用要对应安装的python环境运行;我这里终端默认的python就是自己单独安装位于

/Library/Frameworks/Python.framework里的2.5版本。

注,参看python的环境路径方法:

python

>>>import sys

>>>print sys.path

安装 easy_install:python  ez_setup.py;系统会自动下载相关文件,这次easy_install会默认安装在/Library/Frameworks/Python.framework/Versions/2.5/bin/里,easy_install第三方模块位于:/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/site-packages 里。

目前系统内共存多个python版本,并对应多个easy_install,呵呵,一般不会搞这么复杂吧!

调用不同python,可以通过python+版本号在终端调用指定的python版本,如python2.5;还可以用指定python的模块方式调用其对应的easy_install: python -m easy_install PyXML

如果easy_install自动下载的模块需要gcc编译环境,对应mac系统要安装xCode开发包。

jQuery学习笔记(陆续更新)

最近闲来研究下jQuery,虽然从事WEB相关设计很长时间,但对于jQuery一直比较陌生。了解后感觉JavaScript之于web开发就像是ActionScript之于Flash开发一样,在前端交互体验上都可以借助它们实现出色的效果。而jQuery则是JavaScript最易于使用的方式之一,它拓展自JavaScript,使JavaScript的实际开放更灵活、高效。

一些学习资源:

http://visualjquery.com/ jQuery效果的在线展示,根据上面提供的样例可以很快速的上手jQuery。

50+ Amazing Jquery Examples- Part1 50个精选jQuery实例,第一部分。网络上常见的jQuery应用介绍,很值得一看。

10 Easy jQuery Tricks for Designers 原文作者 Kayla Knight

1、Equal-Height Columns

关于列高度等宽问题,jQuery通过简单函数可以解决这个问题。

  1. function equalHeight(group) {
  2. tallest = 0;
  3. group.each(function() {
  4. thisHeight = $(this).height();
  5. if(thisHeight > tallest) {
  6. tallest = thisHeight;
  7. }
  8. });
  9. group.height(tallest);
  10. }
  11.  
  12. $(document).ready(function(){
  13. equalHeight($(".column"));
  14. });

flash cs4 开发 flex 组件

1、什么是Flash组件:
组件是flash里封装好的功能模块,由于采用类似暗箱的机制,使用起来更方便,更利于分享和复用。

2、flash cs4组件开发
flash cs4 中的组件开发变得更方便了。
实际开发中可能要注意一下问题:类绑定问题,命名空间问题,内部引用图形元素重声明,参数绑定,图标,
component 定义,swc输出 mxi文件配置 打包mxp,网上可以搜索到相应的教程。

3、flash cs4 开发 flex 组件

对于flash cs4 及 flash builder4来说,功能上的互相支援补充变得更容易了,通过Flash cs4开发flex组件变得异常容易,试想下把flash cs4的强大图形动画能力和flex的集成开放能力相结合是多么让人激动的事情阿,可以极大的增强flex UI 的表现里,并大大提高开放效率。

涉及到的相关问题:

1、flex component tool kits for flash cs4 下载及安装问题

2、mx.flash.UIMovieClip 类的功能实现 继承MovieClip类 实现UIComponent类接口。

3、另一种直接利用flash cs4 组件在flex中使用的方法,组件继承自MovieClip,在flex中addChild 到组件容器中。

下面是一个进度条 组件的例子:

下载: code.as
package wonder.loader{
 
//安装flex component tool kits for flash cs4后,导入UIMovieClip
import mx.flash.UIMovieClip;
import flash.display.*;
import flash.text.TextField;
import flash.events.Event;
//import flash.events.TextEvent;
 
public class wloader extends UIMovieClip {
private var _progNumber:int;
public function wloader():void {
super();
progLight.stop();
_progNumber=0;
playProg();
}
 
//setter,getter 进行属性设置,导入到flex builder后,使用wloader标记时,会自动添加 progNumber 属性
 
public function set progNumber(v:int):void {
_progNumber=v;
playProg();
 
}
public function get progNumber():int {
 
return _progNumber;
 
}
 
//进度文本显示及进度条动画控制
private function playProg():void{
numBox.text=_progNumber.toString();
progLight.gotoAndStop(_progNumber);
}
 
}
}

swc下载

全Flash web制作涉及到的一些相关技术

全Flash web制作涉及到的一些相关技术:

1、页面加载技术,目前可以使用传统的loadMovie函数,movieClipLoader类来解决,或者使用网上可以找到的相关类库作为解决方案。

下载: code.as
import mx.transitions.Tween;
 
import mx.transitions.easing.*;
 
var loadingTw:Tween;
 
stop();
 
//----------------------EXTERNAL SWF LOADER
 
loadingTextBox._alpha = 0;
 
var mcLoader:MovieClipLoader = new MovieClipLoader();
 
var mcLoaderListener:Object = new Object();
 
//add a listener for the loader
 
mcLoader.addListener(mcLoaderListener);
 
//while the external swf file is loading
 
mcLoaderListener.onLoadProgress = function(target_mc, bytesLoaded, bytesTotal) {
 
//show preloader
 
loadingTextBox._alpha = 100;
 
//update preloader
 
var pctLoaded = Math.round(bytesLoaded/bytesTotal*100);
 
//page_mc.preloader_mc._xscale = pctLoaded;
 
trace(pctLoaded+" loaded!");
 
loadingTextBox.loadingShow.text = "loading: "+pctLoaded+"%";
 
//if loaded, fade in loaded content
 
if (bytesLoaded>=bytesTotal) {
 
loadingTextBox._alpha = 0;
 
loadingTw = new Tween(loadingTextBox, "_alpha", Regular.easeOut, 100, 0, 12, false);
 
trace("load done!");
 
}
 
};
 
mcLoaderListener.onLoadInit = function() {
 
loader_mc.play();
 
};
 
mcLoader.loadClip("part"+_root.link+".swf",loader_mc);

2、数据加载技术,一般使用XML结构的数据,封装数据的xml文件可以手动修改,也可以制作Php等后台动态更新数据,如果采用php可以把数据存储在mysql数据库,网站页面请求数据时,用php动态输出XML格式数据。目前打算尝试使用Wordpress系统作为flash展示型网站的管理后台,初步了解应该是可行的解决方案!

3、全屏幕控制

下载: code.as
//舞台的缩放及对齐控制
 
Stage.scaleMode = "noScale";
 
Stage.align = "TL";
 
//页面元素的初始设置!
 
loaderbox._x =(Stage.width-358)/2;
 
loaderbox._y =(Stage.height-50)
/2;
 
logo._x =(Stage.width-288)/2;
 
logo._y =(Stage.height-118)
/2-30;
 
BgLight._x = 0;
 
BgLight._y = 0;
 
BgLight._width = Stage.width;
 
BgLight._height= Stage.height;
 
///////////////////////////
 
//监听舞台resize变化
 
fullscreen = new Object();
 
fullscreen.onResize = function() {
 
//swf大小改变时触发根据Stage.width和Stage.height获得的舞台的宽和高来调整各元素显示
 
loaderbox._x =(Stage.width-358)/2;
 
loaderbox._y =(Stage.height-50)
/2;
 
logo._x =(Stage.width-288)/2;
 
logo._y =(Stage.height-118)
/2-30;
 
BgLight._width = Stage.width;
 
BgLight._height= Stage.height;
 
slideShow._x =(Stage.width-744)/2;
 
slideShow._y =(Stage.height-492)
/2;
 
bottomBar._x = 0;
 
bottomBar._y = Stage.height-83;
 
bottomBar._width = Stage.width;
 
topBar._x = 0;
 
topBar._y = 0;
 
topBar._width = Stage.width;
 
logoBottom._x = 15;
 
logoBottom._y = Stage.height-110;
 
logoTop._x =(Stage.width-440)/2;
 
logoTop._y =0;
 
musicCtr._x = Stage.width+80;
 
musicCtr._y = Stage.height-55;
 
menu._x = 420;
 
menu._y = Stage.height-80;
 
};
 
Stage.addListener(fullscreen);

关于 flash8 组件 export in first frame

flash 8 中使用loader 进行预加载制作,如果在文件中使用了2.0的组件内容,那么默认组件是 export in first frame 的,这样带来的问题是影片第一帧的数据量很大(由于包含了导出的组件数据,组件使用很多时更是明显),客观上造成加载进度条失效(往往从90%往上开始进度显示)。
解决方案:
1、所有使用组件在库里右键linkage,取消export in first frame;
2、在publish setting-actionscript setting 里设置 export frame for classes 的值为2;

这样问题解决,导出的组件数据已经放到第2帧了~

关于web栅格系统

在web设计上应用栅格系统,这个很多人在讨论,翻看了网上的几篇文章感觉很有启发!
关于栅格系统查看:
http://lifesinger.org/blog/?p=375
http://960.gs/
其实这种设计方法这平面媒介上也是渊源很长的了,通过我的理解基于栅格的设计就是可以让整个体系中的各种视觉元素的布局、尺寸,更加规范化。当然完全的栅格化是不切实际和无效率的(不能一味地追求将所有设计都栅格化),在网站布局和主要元素上应用栅格作为度量标尺,在大型商业系统视觉设计上还是非常有价值的。
优势:
1、能大大提高网页的规范性。在栅格系统下,页面中所有组件的尺寸都是有规律的。这对于大型网站的开发和维护来说,能节约不少成本。
2、基于栅格进行设计,可以让整个网站各个页面的布局保持一致。这能增加页面的相似度,提升用户体验。
哪些地方使用栅格布局:
1、页面的总体宽度布局,比如两栏、三栏等布局
2、一些固定区块的尺寸,比如广告图片的尺寸
3、区块之间的间距,可以参考栅格系统的槽宽(Gutter)
4、一些可以栅格化的小区域,暗合栅格往往能简化布局上的考虑

Flash tweening 类库介绍

常见的tweening类库:
1、Fuse Kit(http://www.mosessupposes.com/Fuse/)很强大的tweening类库,很多用户,目前没AS3.0版
2、Tweener (http://code.google.com/p/tweener/)有AS3.0版,简单易用
3、TweenLite(http://blog.greensock.com/tweenliteas3/)据说是最快的引擎
4、gTween(http://www.gskinner.com/libraries/gtween/)
5、kitchensynclib(http://code.google.com/p/kitchensynclib/)

第一个Air小程序

开发给公司的课件合成人员使用,主要功能是实现了对大量包含时间点的xml文件的分析处理,可以减少花在上面的重复劳动时间。
采用flash cs3开发,涉及文件的查找,读写,字符,xml的处理。

ActionScript 3 中的强制类型转换

假设有一个类叫做Class1,我们声明了一个它的对象 c1,如果想要将它转换成Class2类型:

方法一:

Class2(c1);

方法二:

c1 as Class2;

AS3 中提供了一个新的操作符: as ,并且推荐使用as 进行强制转换。
使用 as 操作符有几个好处:

1.它的效果和第一种方法是一样的。
2.如果类型不兼容无法转换,就会返回null,而不是出错。这样你就可以自定义错误的时候该做什么。
3.没有运行时错误(Run Time Error)提示。

不过有些时候我在使用 as 的时候并不能达到强制转换的目的,而使用第一种方法则可以。
在AS3.0类库中最高层类(Top Level classes)之间进行强制转换时, as 操作符是不起作用的。比如,假如你想要将一个String 类型的字符串 str 转换成 Number 类型的数字 num 时,可能想要这样写:

num = str as Number;

这样写是没有用的,你只能通过第一种方法来达到强制转换的目的:

num = Number(str);

AIR NativeWindow 窗口控制

几个重点:
1、AIR默认会生成一个主窗口,可以用this.stage.nativeWindow获得对主窗口的引用;
2、AIR程序可生成多个窗口,并使用addChild向窗口添加内容;
3、窗口colse后就不能在重新打开了,只能从新构造窗口,或者使用visible方式是窗口暂时不显示;
4、主窗口的初始设置是在app.xml文件里完成的,新建窗口要使用NativeWindowInitOptions进行窗口初始化设置

代码如下:

下载: window.as
  1. package {
  2.  
  3. import flash.display.MovieClip;
  4.  
  5. import flash.display.NativeWindow;
  6.  
  7. import flash.display.NativeWindowInitOptions;
  8.  
  9. import flash.display.NativeWindowType;
  10.  
  11. import flash.events.MouseEvent;
  12.  
  13. public class testWindow extends MovieClip {
  14.  
  15. private var myBox1:MovieClip;
  16.  
  17. private var myBox2:MovieClip;
  18.  
  19. private var mainWin:NativeWindow;
  20.  
  21. private var window:NativeWindow;
  22.  
  23. public function testWindow() {
  24.  
  25.  
  26.  
  27. myBox1 = new box();
  28.  
  29. myBox2 = new box();
  30.  
  31. mainWin = stage.nativeWindow;
  32.  
  33. with (myBox1) {
  34.  
  35. x=100;
  36.  
  37. y=100;
  38.  
  39. alpha=.5;
  40.  
  41. }
  42.  
  43. with (myBox2) {
  44.  
  45. x=400;
  46.  
  47. y=100;
  48.  
  49. //alpha=.5;
  50.  
  51. }
  52.  
  53. mainWin.stage.addChild(myBox1);
  54.  
  55. mainWin.stage.addChild(myBox2);
  56.  
  57. myBox1.addEventListener(MouseEvent.CLICK,clickHandler1);
  58.  
  59. myBox2.addEventListener(MouseEvent.CLICK,clickHandler2);
  60.  
  61. }
  62.  
  63. private function clickHandler1(event:MouseEvent):void {
  64.  
  65. var options:NativeWindowInitOptions = new NativeWindowInitOptions();
  66.  
  67. options.type = NativeWindowType.UTILITY;
  68.  
  69. if (!window||window.closed) {
  70.  
  71. window = new NativeWindow(options);
  72.  
  73. window.width = 200;
  74.  
  75. window.height = 200;
  76.  
  77. window.activate();
  78.  
  79. }
  80.  
  81. }
  82.  
  83. private function clickHandler2(event:MouseEvent):void {
  84.  
  85. if (!window.closed) {
  86.  
  87. window.width += 100;
  88.  
  89. window.height += 100;
  90.  
  91. }
  92.  
  93. }
  94.  
  95. }
  96.  
  97. }