-1

だから、前述のように、今学期は Flash をやっています... Python でクラスなどを使ってこれを行う方法を知っていると思いますが、AS3 ではすべてがとても... 切り離されています。

短い化学ゲームを作りたいです。火、土、風、精霊の4つのエレメントを持っていますが、水が欠けています。ポイントは水を作ることです。ステージ上には、fire_mc、wind_mc、earth_mc、spirit_mc、pot_mc があります。それらをクリックすると、ポットにドロップが追加されます。

非常に特定の順序で要素をそこに配置する必要がありますが、失敗するとカウントがリセットされ、再起動する必要があります。順番は火、精、土、火、精、風の順です。(現時点では非常に恣意的ですが、そのようなものだとしましょう)

AS3でそれをどのように作成しますか?

(これらのタグは、この特定の種類のゲームを構築したい人を支援するためにあります)

これが私の現在のコードです。

stop();
lvln.text="Phase 3 - Bargaining";
import flash.events.MouseEvent;
import flash.display.MovieClip;
import flash.events.Event;

const WIDTH:int=50;
const HEIGHT:int=50;
const SEPX:int=50;

var fireb:firebtn=new firebtn();
var spiritb:spiritbtn=new spiritbtn();
var earthb:earthbtn=new earthbtn();
var windb:windbtn=new windbtn();
var combo:Array=new Array();
var truecombo:Array=[fireb,spiritb,spiritb,windb,earthb];
var lastElm=combo[combo.length-1];

firebb.addEventListener(MouseEvent.CLICK, fire1);
windbb.addEventListener(MouseEvent.CLICK, wind1);
earthbb.addEventListener(MouseEvent.CLICK, earth1);
spiritbb.addEventListener(MouseEvent.CLICK, spirit1);

function add1(clip:DisplayObject)
{
    if (combo.length > 6) 
    {
        combo.shift();
        combo.push(clip);
        reorder();
    }
}

function reorder()
{
   for(var i:int = 0; i < combo.length; i++)
   {
       combo[i].x = i * 50;
   }
}

function fire1(e:MouseEvent)
{
    lastX+=SEPX;
    twist.gotoAndPlay(2);
    var fireb:firebtn=new firebtn();
    stage.addChild(fireb);
    add1(fireb);
    fireb.width=WIDTH;
    fireb.height=HEIGHT;
    fireb.x=lastX;
    fireb.y=lastY;
    pop.play();
}

function wind1(e:MouseEvent)
{
    lastX+=SEPX;
    twist.gotoAndPlay(2);
    var windb:windbtn=new windbtn();
    stage.addChild(windb);
    add1(fireb);
    windb.width=WIDTH;
    windb.height=HEIGHT;
    windb.x=lastX;
    windb.y=lastY;
    pop.play();
}

function earth1(e:MouseEvent)
{
    lastX+=SEPX;
    twist.gotoAndPlay(2);
    var earthb:earthbtn=new earthbtn();
    stage.addChild(earthb);
    add1(fireb);
    earthb.width=WIDTH;
    earthb.height=HEIGHT;
    earthb.x=lastX;
    earthb.y=lastY;
    pop.play();
}


function spirit1(e:MouseEvent)
{
    lastX+=SEPX;
    twist.gotoAndPlay(2);
    var spiritb:spiritbtn=new spiritbtn();
    stage.addChild(spiritb);
    combo.push(spiritb);
    spiritb.width=WIDTH;
    spiritb.height=HEIGHT;
    spiritb.x=lastX;
    spiritb.y=lastY;
    pop.play();
}
4

1 に答える 1

0

私はこのようにします。つまり、4つの要素があります。それらのそれぞれにボタン/MovieClipを作成します(それらの1つをクリックすると、ポットがいっぱいになります)。これが処理する必要のあるアニメーションです。ただし、組み合わせが正しいかどうかを確認するには、このコードを使用してください

    import flash.events.MouseEvent;
    import flash.events.Event;

    var combination:Array=new Array(); //Array that loads elements being clicked
    var clength:Number = 0; // combination length for making water
    var truecombination:Array=new Array();  // Array that holds combination for making water
    truecombination.push("fire"); //first element
    truecombination.push("wind"); //second element
    truecombination.push("spirit"); //third element
    truecombination.push("fire"); //fourth element
    truecombination.push("wind"); // fifth element
    truecombination.push("earth"); //sixt element(you can go for more elements in your combination but remember to change the clength variable)

    //adding event listeners for elemnt buttons
    fire_mc.addEventListener(MouseEvent.CLICK, fclick);
    wind_mc.addEventListener(MouseEvent.CLICK, wclick);
    spirit_mc.addEventListener(MouseEvent.CLICK, sclick);
    earth_mc.addEventListener(MouseEvent.CLICK, eclick);

    //you can also add animation labels to the functions below to make the game more interesting
    function fclick(e:MouseEvent):void
    {
        combination.push("fire");
            clength+=1;
    }
    function wclick(e:MouseEvent):void
    {
        combination.push("wind");
            clength+=1;
    }
    function sclick(e:MouseEvent):void
    {
        combination.push("spirit");
            clength+=1;
    }
    function eclick(e:MouseEvent):void
    {
        combination.push("earth");
            clength+=1;
    }

    addEventListener(Event.ENTER_FRAME,loop);//making a loop function that checks the combination
    function loop(e:Event):void
    {
        if (truecombination.length => 6) //waiting for player to enter his combination
        {
            if (combination[clength-6] == "fire" && combination[clength-5] == "wind" && combination[clength-4] == "spirit" && combination[clength-3] == "fire" && combination[clength-2] == "wind" && combination[clength-1] == "earth") //checking if combination is true
            {

                trace("You Won");
            }
            else // and if it is not true...
            {
                //trace("You Lose");

            }
        }
    }

お役に立てば幸いです

于 2012-12-02T15:54:54.207 に答える