佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1077|回复: 22

帮帮忙。。FLASH高手。

[复制链接]
发表于 3-12-2005 07:38 PM | 显示全部楼层 |阅读模式
各位FLASH高手请帮帮忙。。。
小弟想要自做一个谜宫的游戏用flash,,但不知应该从何下手。。
应该先学些什么呢??帮帮忙给点意见。。
我要做的类似以下的网站。。

http://games.yahoo.com/games/kidsmz.html

谢谢大家帮忙。。
回复

使用道具 举报


ADVERTISEMENT

发表于 5-12-2005 04:03 PM | 显示全部楼层
用Array定義map,如

line[0] = [1,1,1,1,1,1,1];
line[1] = [1,0,0,0,0,0,1];
line[2] = [0,0,1,0,1,0,0];
line[3] = [1,0,1,0,1,0,1];
line[4] = [1,0,0,0,1,0,1];
line[5] = [1,1,1,1,1,1,1];
回复

使用道具 举报

 楼主| 发表于 6-12-2005 04:07 PM | 显示全部楼层
原帖由 super-tomato 于 5-12-2005 04:03 PM 发表
用Array定義map,如

line[0] = [1,1,1,1,1,1,1];
line[1] = [1,0,0,0,0,0,1];
line[2] = [0,0,1,0,1,0,0];
line[3] = [1,0,1,0,1,0,1];
line[4] = [1,0,0,0,1,0,1];
line[5] = [1,1,1,1,1,1,1];

对不起。。。我不是很明白。。
可以讲解一下吗??
我想要容易明白一点的。。。麻烦你
谢谢。。
回复

使用道具 举报

发表于 7-12-2005 03:19 AM | 显示全部楼层
http://super-tomato.aspfreeserver.com/example/maze.swf
以上所定义的mapping实现出来会是这样。只要根据这个数组的数字放置所需要的图片就可以了

http://super-tomato.aspfreeserver.com/example/mapping.swf
这个也是相同
回复

使用道具 举报

 楼主| 发表于 7-12-2005 03:38 AM | 显示全部楼层
原帖由 super-tomato 于 7-12-2005 03:19 AM 发表
http://super-tomato.aspfreeserver.com/example/maze.swf
以上所定义的mapping实现出来会是这样。只要根据这个数组的数字放置所需要的图片就可以了

[url]http://super-tomato.aspfreeserver.com/ ...


好厉害哦。。再请问一下要怎样把design好的flash post into internet ...
有什么server is free one ??就要好像你给的这样。。。
谢谢。。
回复

使用道具 举报

 楼主| 发表于 12-12-2005 03:24 PM | 显示全部楼层
super tomato ...
可以send给我你example 的source code 吗??
因为我不懂要怎么使用。。。
我很想要学。。
谢谢。。。
回复

使用道具 举报

Follow Us
blueyesblue 该用户已被删除
发表于 14-12-2005 10:42 PM | 显示全部楼层
我也想知道怎样弄到的。。
回复

使用道具 举报

 楼主| 发表于 17-12-2005 10:30 PM | 显示全部楼层
没有人可以告诉我怎样使用array 吗??
我很急需要学这个。。。请教我怎样使用array来build maze ...
thanks...
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 17-12-2005 10:38 PM | 显示全部楼层
原帖由 super-tomato 于 7-12-2005 03:19 AM 发表
http://super-tomato.aspfreeserver.com/example/maze.swf
以上所定义的mapping实现出来会是这样。只要根据这个数组的数字放置所需要的图片就可以了

[url]http://super-tomato.aspfreeserver.com/ ...


还有怎样放置所需要的图片在那个数组的array 里??好难啊。。
我都想不到。。!!!
救命啊。。。
回复

使用道具 举报

发表于 18-12-2005 11:42 PM | 显示全部楼层
可以使用attachMovie, loadMovie
回复

使用道具 举报

 楼主| 发表于 19-12-2005 11:00 PM | 显示全部楼层
我使用了array来定义我的map..
方法如下:
line = new Array();
line = [[0,1,1,0],
         [0,0,0,0],
         [0,0,1,0],
         [1,0,0,0]];
arraylength = 4;
for (i = 0;i<arraylength;i++)
        {
                for (j = 0;j<arraylength;j++)
                {
                        if (line[ i ][j] !=0)
                        {
                                “问题“?
                        }
                       
                }
        }

我想在“问题“那里,当它不是0的时候,就会出现一个四方格,要用action script来表现的。。
请问该怎样做??

[ 本帖最后由 yong2212 于 20-12-2005 07:31 PM 编辑 ]
回复

使用道具 举报

 楼主| 发表于 20-12-2005 07:33 PM | 显示全部楼层
原帖由 super-tomato 于 18-12-2005 11:42 PM 发表
可以使用attachMovie, loadMovie


我试了attachMovie 和 loadMovie 都不行。。应该怎样加入呢??
回复

使用道具 举报

发表于 20-12-2005 08:19 PM | 显示全部楼层

attachMovie 语法为
attachMovie(id:String, name:String, depth:Number, [initObject:Object])
id 就是 Library 的 linkage Identifier
name 就是名字咯,不过在场景上必须是独一的
depth 是物深,也必须是独一
initObject:Object 一般省略

想来你应该还没有建立 linkage 吧?

建议先了解 Flash 的架构和用法,不要一开始就想做游戏。
回复

使用道具 举报

 楼主| 发表于 20-12-2005 11:10 PM | 显示全部楼层
原帖由 sson 于 20-12-2005 08:19 PM 发表

attachMovie 语法为
attachMovie(id:String, name:String, depth:Number, [initObject:Object])
id 就是 Lib ...


我使用..
line = new Array();
line = [[1,0,1,1,1,1,1,1,1,1],
                 [1,0,1,0,0,0,0,0,0,1],
                 [1,0,1,0,1,0,1,1,0,1],
                 [1,0,1,1,1,0,1,1,0,1],
                 [1,0,0,0,0,0,0,1,0,1],
                 [1,0,1,0,1,1,1,1,0,1],
                 [1,0,1,0,0,0,1,1,0,1],
                 [1,0,1,1,1,0,1,1,0,1],
                 [1,0,0,0,1,0,1,1,0,0],
                 [1,1,1,1,1,1,1,1,1,1]];
arraylength = 10;

for (x = 0;x<arraylength;x++)
        {
                for (y = 0;y<arraylength;y++)
                {
                       
                        if (line[x][y] !=0)
                        {
                                _root.attachMovie("square","try",1);       
                        }
                }
        }

"square" is my movieclip linkage name, "try" is a new name,actually i dont really understand wat is the depth ..but i try to put one ..
result only display a square..
对不起..我只是不知道要从何学起..而且我想要用这个来做我的assignment.
我有参考其他flash..但也在学习中..

[ 本帖最后由 yong2212 于 20-12-2005 11:13 PM 编辑 ]
回复

使用道具 举报

 楼主| 发表于 20-12-2005 11:17 PM | 显示全部楼层
我自己用了一下方法 :

line = new Array();
line = [[1,0,1,1,1,1,1,1,1,1],
                 [1,0,1,0,0,0,0,0,0,1],
                 [1,0,1,0,1,0,1,1,0,1],
                 [1,0,1,1,1,0,1,1,0,1],
                 [1,0,0,0,0,0,0,1,0,1],
                 [1,0,1,0,1,1,1,1,0,1],
                 [1,0,1,0,0,0,1,1,0,1],
                 [1,0,1,1,1,0,1,1,0,1],
                 [1,0,0,0,1,0,1,1,0,0],
                 [1,1,1,1,1,1,1,1,1,1]];
arraylength = 10;

for (x = 0;x<arraylength;x++)
        {
                for (y = 0;y<arraylength;y++)
                {
                       
                        if (line[x][y] !=0)
                        {
                               
                                _root.lineStyle(2,0x0000FF,50);
                                _root.moveTo(y*20,x*20);
                                _root.lineTo(y*20+20,x*20);
                               
                                _root.moveTo(y*20,x*20);
                                _root.lineTo(y*20,x*20+20);
                               
                                _root.moveTo(y*20,x*20+20);
                                _root.lineTo((y*20)+20,(x*20)+20);
                               
                                _root.moveTo((y*20)+20,x*20);
                                _root.lineTo((y*20)+20,(x*20)+20);
                        }
                }
        }

maze 是出来了..不知这样的方法可以吗??
请大家指点..!!谢谢
回复

使用道具 举报

发表于 21-12-2005 12:06 AM | 显示全部楼层

当然也行,帮你改了些许
var size:Number = 20; // 设置格子的大小
var surface:MovieClip = this.createEmptyMovieClip("__maze__", 10); // 建立一个固定场景,方便日后控制等用途
// 绘制方式
function drawbox(x, y) {
        x = x * size
        y = y * size
        surface.beginFill(0xCC0000)
        surface.moveTo(x, y)
        surface.lineTo(x + size, y)
        surface.lineTo(x + size, y + size)
        surface.lineTo(x, y + size)
        surface.lineTo(x, y)
        surface.endFill()
}
// 贴库方式
function attach(x, y) {
        var depth:Number = surface.getNextHighestDepth()
        // box 是 linkage identifier
        var box:MovieClip = surface.attachMovie("box", "b" + depth, depth)
        box._x = x * size
        box._y = y * size
}
line = new Array()
line = //不变....
for (y = 0; y < line.length; y++) {
        for (x = 0; x < line[y].length; x++) {
                if (line[y][x] != 0) {
                        // 取择任何一个
                        drawbox(x, y)
                        //attach(x,y)
                }
        }
}
回复

使用道具 举报


ADVERTISEMENT

 楼主| 发表于 21-12-2005 12:58 AM | 显示全部楼层
原帖由 sson 于 21-12-2005 12:06 AM 发表

当然也行,帮你改了些许


这真是我想要的!! 但一只做不出...
但我还是有问题..
var surface:MovieClip = this.createEmptyMovieClip("__maze__", 10);
到底这个该怎样解释??
"_maze_" is a instancename, but what is this use for ??
and can tell me more clearly about "depth", i still douth about this.

function attach(x, y) {
        var depth:Number = surface.getNextHighestDepth()
        // box 是 linkage identifier
        var box:MovieClip = surface.attachMovie("box", "b" + depth, depth)
        box._x = x * size
        box._y = y * size
}
var depth:Number = surface.getNextHighestDepth() <--到底有什么用??
为什么 是"b" + depth, depth, 而不是"b",depth,depth
box._x = x * size
box._y = y * size
_x and _y该何时使用???underscore 该怎样用??

谢谢..
回复

使用道具 举报

发表于 21-12-2005 01:34 PM | 显示全部楼层

var surface:MovieClip = this.createEmptyMovieClip("__maze__", 10);
没错 "__maze__" 是 instance name,就如上面的注解:建立一个固定场景,方便日后控制等用途
如果全部放到 _root 也是可以,不过日后如果要增强等就可能比较不方便控制,
这只是小章鱼惯用的一种技巧,当然可以有其它的方式。

depth 是物深,就是一般理解的 z-order ,数值越高表示物件越在上面。
Flash 中,在一个场景内(instance/MovieClip)每一个物的深和名必须是独一的,
否则新建立的物将取代旧的同名或深的物件。

var depth:Number = surface.getNextHighestDepth() <--到底有什么用??
surface.getNextHighestDepth() 就是取该场景(instance/movieclip 在这里就是取 surface -> __maze__ 的)的下一个(最高)可用的物深。
surface 是一个指向 _root.__maze__ 的指针(pointer)。


为什么 是"b" + depth, depth, 而不是"b",depth,depth
box._x = x * size
box._y = y * size
_x and _y该何时使用???underscore 该怎样用??

为什么不是"b",depth,depth?看看上回说的 attachMovie 的用法吧
attachMovie(id:String, name:String, depth:Number, [initObject:Object])
第一个:id
第二个:name
第三个:depth
第四个:initObject (这是可省略的值)

surface.attachMovie("box", "b" + depth, depth) 里的:
"box" 是库标识(linkage identifier) 也就是 id 项
"b" + depth 是 name 项

"b" 是指定新建名,不过由于名必须是独一的,所以加上物深来命名,
就形成了 b1,b2,b3 等如此类推。

box._x = x * size 的 box 是 MovieClip 的类,也就是场景上的物件
_x, _y 是 MovieClip 的属性(properties),这和下画线(underscore)没有关系
这个些问题已经不是 Flash 的范围了,而是编程了解的范围
回复

使用道具 举报

 楼主| 发表于 21-12-2005 02:44 PM | 显示全部楼层
原帖由 sson 于 21-12-2005 01:34 PM 发表

var surface:MovieClip = this.createEmptyMovieClip("__maze__", 10);
没错  ...

谢谢小章鱼。。。
有问题在发问。。
回复

使用道具 举报

 楼主| 发表于 22-12-2005 07:21 PM | 显示全部楼层
请问这个有什么问题。。不能auto solve ??
var size:Number=20;
var surface:MovieClip = this.createEmptyMovieClip("maze",1);
surface._x = 100;
surface._y = 100;
var mazewall:MovieClip = surface.createEmptyMovieClip("wall",2);

//attachmovie function
function attach(id,x,y)
{
        var depth:Number = mazewall.getNextHighestDepth();
        var box:MovieClip = mazewall.attachMovie(id,"b" + depth,depth);
        box._x = x * size;
        box._y = y * size;
}
//use to look current position
textArea1 = " ";
textArea2 = " ";
var a:Number=0;

//auto-solve funtion by DFS
function autosolve(y,x)
{
        textArea1 = textArea1 + "y,x("+y +","+x+")"+"\n";
        if(line[x][y] == 3)
        {
                textArea1 = textArea1 + "complete" + " ";
                stop();
        }

        if(line[x+1][y] != 0) /* hit the wall */
        {
                textArea1 = textArea1 + a +") Dead Road X,Y=("+ x +","+ y + ")\n";
                a = a +1;
                return;
        }
        else  /*if not hit wall*/
        {
                textArea1 = textArea1 + a+") Go Down X,Y=(" + x +","+ y +") \n";
                a = a + 1;
                autosolve(x+1,y);
        }
       
        if(line[x][y+1]!=0) /*hit the wall*/
        {
                textArea2 = textArea2 + a +")Hit Wall, return X,Y=(" + x +","+ y +") \n";
                a = a+1;
                return;
        }
        else  /* got road*/
        {
                textArea2 = textArea2 + a +")Go right X,Y=(" + x +","+ y +") \n";
                a = a+1;
                autosolve(x,y+1);
        }
}

line = new Array();
line = [[1,2,1,1],
                 [1,0,0,1],
                 [1,1,0,1],
                 [1,0,0,3],
                 [1,1,1,1]];

//create wall,startpoint,endpoint and player
for (y=0;y<line.length;y++){
        for (x=0;x<line[y].length;x++){
                switch(line[y][x])
                {
                       
                        case 0:
                        break;
                       
                        case 1:
                        //create walls
                        attach("box",x,y);
                        break;
                       
                        case 2:
                        //create startpoint and player
                        attach("startpoint",x,y);
                        var p:MovieClip = surface.attachMovie("player","player2",surface.getNextHighestDepth());
                        p._x = x*size;
                        p._y = y*size;
                        break;
                       
                        case 3:
                        //create endpoint
                        attach("endpoint",x,y);
                        break;
                }
        }
}
autosolve(1,0);
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 11-11-2024 09:48 AM , Processed in 0.123709 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表