【发布时间】:2018-10-05 01:22:51
【问题描述】:
我是编码新手,很难找到答案。
基本上,我正在尝试使用 ActionScript 3 在 Flash CS5.5 中制作一个装扮游戏。当前的问题是我正在尝试使颜色在不同的衣服上保持一致(例如:如果你有一个蓝色T恤,然后换成裙子,裙子应该是蓝色的。如果你把裙子的颜色改成红色,再换回T恤,那么T恤现在应该是红色的。)
我正在使用我在 Photoshop 中创建的资源,并且我将所有资源都放在了 Movie Clip 符号中(所以所有的 T 恤都在 Symbol T 恤里面,所有的衣服都在 Symbol Dress 里面,等等) ;最重要的是,我将所有相同颜色的衣服放在它们各自符号的相同关键帧编号中(所有红色衣服都在关键帧 1 中,所有蓝色衣服都在关键帧 2 中,等等)。
我要做的是每当玩家单击颜色按钮时为符号时间轴中的变量分配一个数字,然后在主时间轴中读取变量,将该变量存储在主时间轴中的另一个变量中所以即使符号发生变化,它也会持续存在,然后让另一个符号读取主时间线上的变量,以应用到一个告诉它去哪里的函数。
我目前的问题是,我无法让主时间线上的变量读取符号上的变量,因此无法更新。
代码如下:
//MAIN SCENE SCRIPT
//STOP EVERYTHING FROM STARTING
stop();
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
//DECLARE COLOR VARIABLE IN MAIN TIMELINE AND ASSIGN VALUE FROM SQUARE
SYMBOL
var color = square.KeyColor;
//MOVE COLOR VARIABLE TO PERMANENT VARIABLE
var KeepColor:int = color;
// change color variable IF THE VALUE IS NOT 1
function ChangeColor () : void
{
if(KeepColor != 1)
{
if (square.KeyColor != 1)
{
KeepColor = square.KeyColor;
trace("color set to square value" )
}
else if (pentagon.KeyColor != 1)
{
KeepColor = pentagon.KeyColor;
trace("color set to pentagon value")
}
else
{
trace ("there is an error")
//break;
}
}
}
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
//CALL FUNCTION TO GO TO SQUARE SYMBOL AT THE CLICK OF BUTTON 1
btn1.addEventListener(MouseEvent.CLICK, printNumber);
//FUNCTION TO GO TO SQUARE SYMBOL
function printNumber(event:MouseEvent):void
{
//GO TO FIRST KEYFRAME IN MAIN TIMELINE AND STOP
gotoAndStop(1)
//ASSIGN KEYCOLOR VALUE
square.KeyColor = color;
//PRINT COLOR CODE
trace("color is " + color);
}
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
//CALL FUNCTION TO GO TO PENTAGON SYMBOL AT THE CLICK OF BUTTON 2
btn2.addEventListener(MouseEvent.CLICK, printNumber2);
//FUNCTION TO GO TO PENTAGON SYMBOL
function printNumber2(event:MouseEvent):void
{
//GO TO FIRST KEYFRAME IN MAIN TIMELINE AND STOP
gotoAndStop(2)
//PRINT COLOR CODE INSIDE OF THE PENTAGON SYMBOL
trace("color is " + color);
}
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
//CHECK THAT THE COLOR CODE IN TH MAIN TIMELINE IS THE SAME AS THE COLOR
FROM THE SQUARE
//PRINT THE CODE AT THE CLICK OF THIS BUTTON
btnK.addEventListener(MouseEvent.CLICK, checkOtherKey);
//DECLARE FUNCTION TO PRINT KeepColor VARIABLE
function checkOtherKey(event:MouseEvent):void
{
trace("the current color is " + KeepColor);
}
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
//SQUARE SYMBOL SCRIPT
//STOP EVERYTHING FROM STARTING
stop();
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
//DECLARE KEYFRAME CODE FOR COLOR
var KeyColor:int = 1;
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
//CALL FUNCTION TO GO TO COLOR 1 AT THE CLICK OF BUTTON 1
btn1.addEventListener(MouseEvent.CLICK, Keynumber);
//DECLARE FUNCTION FOR CHANGING KEYFRAME
function Keynumber(event:MouseEvent):void
{
//GO TO FIRST KEYFRAME IN SQUARE TIMELINE AND STOP
gotoAndStop(1);
//SET COLOR CODE TO 1
KeyColor = 1;
//PRINT COLOR CODE OF FIRST COLOR
trace("SQUARE" + KeyColor);
//change root color number
MovieClip(root).color = KeyColor;
}
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
//CALL FUNCTION TO GO TO COLOR 2 AT THE CLICK OF BUTTON 2
btn2.addEventListener(MouseEvent.CLICK, Keynumber2);
//DECLARE FUNCTION FOR CHANGING KEYFRAME
function Keynumber2(event:MouseEvent):void
{
//GO TO FIRST KEYFRAME IN SQUARE TIMELINE AND STOP
gotoAndStop(2);
//SET COLOR CODE TO 2
KeyColor = 2;
//PRINT COLOR CODE OF SECOND COLOR
trace("SQUARE" + KeyColor);
MovieClip(root).color = KeyColor;
}
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
// PENTAGON SYMBOL SCRIPT
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
//STOP EVERYTHING FROM STARTING
stop()
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
//DECLARE KEYFRAME CODE FOR COLOR
var KeyColor:int;
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
//CALL FUNCTION TO GO TO COLOR 1 AT THE CLICK OF BUTTON 1
btn1.addEventListener(MouseEvent.CLICK, Keynumber);
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
//DECLARE FUNCTION FOR CHANGING KEYFRAME
function Keynumber(event:MouseEvent):void
{
//GO TO FIRST KEYFRAME IN PENTAGON TIMELINE AND STOP
gotoAndStop(1);
//SET COLOR CODE TO 1
KeyColor = 1;
//PRINT COLOR CODE OF FIRST COLOR
trace ("PENTAGON" + KeyColor);
}
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
//CALL FUNCTION TO GO TO COLOR 2 AT THE CLICK OF BUTTON 2
btn2.addEventListener(MouseEvent.CLICK, Keynumber2);
//DECLARE FUNCTION FOR CHANGING KEYFRAME
function Keynumber2(event:MouseEvent):void
{
//GO TO SECOND KEYFRAME IN PENTAGON TIMELINE AND STOP
gotoAndStop(2);
//SET COLOR CODE TO 2
KeyColor = 2;
//PRINT COLOR CODE OF SECOND COLOR
trace("PENTAGON" + KeyColor);
}
感谢您的帮助!
【问题讨论】:
标签: actionscript-3 flash flash-builder flash-cs5