发博文
个人资料
似是故人来
似是故人来
  • 博客等级:
  • 博客积分:179
  • 博客访问:21,338
  • 关注人气:6
评论
加载中…
留言
加载中…
友情链接

9RIA.com天地会

国内最大的AS3论坛

访客
加载中…
好友
加载中…
music
博文
(2011-01-19 16:31)
标签:

flash

as3

3d

it

分类: flash as3学习笔记

AS3中加了3D的API,这当然是一件众望所归的事情,现在肯定要体验一下,顺便写下体验过程和大家共勉:

发现容器发生3D旋转,子对象不是扁平化,而是也对应其3D旋转,真是爽!

用FlashDevelop写代码很爽,如果你用的FlashIDE,注意把图片导入,另外我这只是一个体验,如果你想做成图片浏览器,稍做修改应该也很简单

package {
 import flash.display.Bitmap;
 import flash.display.DisplayObject;
 import flash.display.Sprite;
 import flash.events.Event;
 import flash.geom.Vector3D;

 [SWF(width=600,height=600,backgroundColor=0x000000,frameRate=24)]
 public class Main extends Sprite {
  private var _sprite:Sprite;
  [Embed(source = 'flower.jpg')]
  private var Img:Class;
  private var imgs:Array;

  public function Main():void {
   if (stage) {
    init();
   } else {

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 

 大圆可以拖动,不说废话,上代码:

ball.as代码和上次一样。

 Main.as

package {
 import flash.display.Sprite;
 import flash.events.Event;
 import flash.events.MouseEvent;
 import flash.geom.Point;
 
 
 public class Main extends Sprite {
  private var ball:Ball;
  private var circle:Sprite;
  private var length:Number;
  private var centerX:Number = 300;
  private var centerY:Number = 300;
  private var circleOldX:Number;
  private var circleOldY:Number;
  private var r:Number = 200;
&

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 

无意间翻到以前的一个东东,实现的是一个球在多边形内的碰撞,和我的另一篇文章利用向量来实现的效果一样,但这个是利用坐标的旋转来实现多角度碰撞,给大家分享一下,

Ball.as:

package {
 import flash.display.Sprite;
 public class Ball extends Sprite {
  public var vx:Number = 0;
  public var vy:Number = 0;
  public var radius:Number;
  private var color:uint;
  public function Ball(radius:Number=40,color:uint=0xff0000) {
   this.radius=radius;
   this.color=color;
   init();
&

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 

我觉得现在很多人都需要一种编程思想,而不是在论坛上看到很精彩的东西,就马上去想着做

原文作者乔纳森·丹尼可(Jonathan Danylko)是一位自由职业的web架构师和程序员,编程经验已超过20年,涉足领域有电子商务、生物技术、房地产、医疗、保险和公用事业。正如乔纳 森在文中所言,本文适合刚毕业的大学生和刚入门的程序员。如果你已是高级开发人员,或许你在本文中看到自己的身影。

从11岁时,我就一直在编程,并且一直都很喜欢技术和编程。这些年来,我积累了一些艰难又容易的经验。作为一名程序员,你或许还没这些经验,但我会把它们献给那些想从中学到更多的朋友。

我会持续更新这些经验,我可能还会有更多的感想,但就我这20年来看,我想下面这个列表中基本不需要增添额外的东西了。下面就是我至今最难忘的经验。

1. 估算解决问题所需要的时间。不要怕,承认吧!我曾见过一些程序员为了解决一个特殊问题而坐在显示器前面8小时。为自己定一个时间限制吧,1小时、30分钟或甚至15分钟。如果在这期间你不能解决问题,那就去寻求帮助,或到网上找答案,而不是尝试去做“超级堆码员”。

2. 编程语言是一种

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
(2010-12-22 20:30)

又是一段时间没有更新了,把以前的一些小心得贴上吧:

1、有些时候需要对多维数组中的第一维进行排序,根据是第二维的某项,比如说对下面数组排序:
var a:Array=[[1,2,3],[3,1,0],[2,6,2],];
根据第二维第二项进行排序:
这样写即可:
a.sortOn('1',Array.NUMERIC);
trace(a);//输出:3,1,0,1,2,3,2,6,2
2、1/4的几率跳到第二帧
my_mc.gotoAndStop(Math.random()>.25||2)

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 

 

这几天帮朋友做个小东西时用到很多组件,经常需要调整一下文本格式,也产生了一些困惑,最终通过查找帮助,找到了原因,作一下总结:

组件的类定义了一些方法、属性、事件和样式,使用它们可以在应用程序中与该组件进行交互。ActionScript 3.0 UI 组件是 Sprite 和 UIComponent 类的子类,继承了它们的属性、方法和事件
组件都有(继承)一个 setStyle(style:String, value:Object):void 的方法。

所以我在设置一个ComboBox实例的样式(字体,对齐方式等)时候直接调用这个方法:

my_CB.setStyle('textFormat',myTextFormat);

发现是不起作用的,困惑,这个子类没有这个方法了?
查找帮助,发现ComboBox组件是由 TextInput 和 List 两个组件组合而成的,那就需要分开设置,这样搞:

my_CB.textField.setStyle('textFormat',myTextFormat;
my_CB.dropdown.setStyle('textFormat',myTextFormat);

现在发现,上面的样式设置成功,但下拉列表还是不行?
再查:(以下摘自帮助文档)
List、DataGrid 和 TileList 组件均继承自 SelectableList 基类。因此,这些组件被视为基于 List 的组件

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 

最近看了看组件,无意发现在帮助文件中有一个不太明显的错误,也是老手也会偶尔犯的错误,那就是值引用和地址引用不分,原代码如下:
import fl.data.DataProvider;
import flash.display.DisplayObject;

var aBox:MovieClip = new MovieClip();
var i:uint = 0;
var colors:Array = new Array(0x00000, 0xFF0000, 0x0000CC, 0x00CC00, 0xFFFF00);
var colorNames:Array = new Array('Midnight', 'Cranberry', 'Sky', 'Forest', 'July');
var dp:DataProvider = new DataProvider();
for(i=0; i < colors.length; i++) {
    drawBox(aBox, colors[i]);    // draw box w next color in array
    dp.addItem( {label:colorNames[i], source:aBox} );
}
aTl.dataProvider = dp;
aTl.columnWidth = 110;
aTl.rowHeight = 130;
aTl.setSize(280,150);
aTl.move(150, 150);
aTl.setStyle('contentPadding', 5);

function drawBox(box:MovieClip,color:uint):void {
     

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 

 好久没有用flash了,今天下载了flash cs5用了一下,感觉是强大了不少啊,

不必用引导线就可以让物体按自己想要的轨迹运动,对于设计人员来说是很方便的,更何况还支持3D,嗯,真是应该研究下

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 

今天在试几行小代码时出现:

Warning: 1060: 迁移问题: 不再支持 drawCircle 方法。请改用 Graphics.drawOval 方法。

但是圆也画出来了,也没有其它问题。

后来发现,我为了减少需要编写的代码量,这样写:

with(sprite){
  graphics.beginFill(0xff0000);
  graphics.drawCircle(0,0,50);
  graphics.endFill();

……

应该是没有问题的,我把改为不用with:

sprite.graphics.beginFill(0xff0000);
  sprite.graphics.drawCircle(0,0,50);
  sprite.graphics.endFill();

……

就没有什么问题了,而很明显前者的写法是正确的,(参看帮助文件)说明这里有个BUG

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
标签:

算法

分而治之法

it

分类: 算法相关

积木的摆放方式有很多可能,我们必须从中找到正确答案。有很多方法求解这个问题,其中分而治之法是非常理想的。先把整个棋盘分成四个相同的区域:小洞落在其中的一个区域中。再将每一块积木放在棋盘上,这块积木覆盖三个区域,除了有洞的那一个。这样,原来有一个洞的大方块就变成了四个小方块,每个小方块有且仅有一个洞,包括原来就有的那个洞和因积木覆盖形成的洞。我们继续这一过程,又把每个小方块分成四个更小的小方块,每个小方块上再放一个新的积木,使得每个更小方块上正好有一个洞。

继续这一过程,直到最后都是2×2的小方块,现在问题就很简单了吧,(觉得过程很简单,应该不必画图了吧)只需要放置一个积木到一个2×2的有一个小洞的小方块上去!因此,我们很容易得到了问题的最终解!

(有空了补上个用分而治之法的练习)

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
  

新浪BLOG意见反馈留言板 不良信息反馈 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

新浪公司 版权所有