0

我是Flash的新手-有点。我不久前开始使用 Flash,但两年内没有接触过它。也就是说,我习惯使用 AS2.0 并开始在 2.0 中制作游戏。我正在尝试实现一个屏幕,用户可以在其中从典型的颜色渐变中选择角色的皮肤和头发颜色。我已经设置好了,皮肤颜色实际上会根据他们点击的内容改变颜色。

但是,它不会保持这种状态。要进入这个屏幕,有一个带有角色实例的主菜单。在角色内,每个肢体都被分成自己的影片剪辑。每个肢体都由一些阴影、轮廓和仅皮肤的电影剪辑组成。在颜色更改屏幕上,我将每个肢体分开并指定了一个实例名称。然后,在每个肢体中,我为皮肤部分指定了一个实例名称。然后我更改了皮肤的颜色,但在返回主菜单后,皮肤又恢复了原来的颜色。如果我使用按钮返回角色外观屏幕,皮肤将恢复其原始颜色,而不是用户选择的颜色。我想我怎样才能实现这一点,以便颜色选择保持不变?

这是我当前的代码:

import flash.display.BitmapData;
        function changeColor(clip, theColor) {
            var myColor = new Color(clip);
            myColor.setRGB(theColor);
        }
        mc_colorPicker._visible = true;
        mc_colorPicker.colors.onPress = function() {
    srcMC = mc_colorPicker.colors;
    var colorBitmap:BitmapData = new BitmapData(srcMC._width, srcMC._height, true, 
        0x00000000);
    colorBitmap.draw(srcMC);
    colorValue = "0x"+colorBitmap.getPixel(srcMC._xmouse, srcMC._ymouse).toString(16);
    changeColor(RULeg.skin, colorValue);
        }

谢谢!

4

1 回答 1

0

我想通过阅读您所写的内容,您在主菜单和角色外观屏幕中使用了不同的 MovieClips 实例。

如果是这种情况,每次您在两个屏幕之间切换时,您对角色所做的所有更改都会恢复:在 Flash 中,每次实例化或从新关键帧读取 MovieClip 时,就像使用新的 MovieClip . 因此,在其中所做的所有更改(颜色、内部动画剪辑的位置等)都会恢复到其原始状态(它在 Flash pro 库项目的第一帧中的状态)。

因此,为了使更改持久化,您应该将 colorValue 变量(每次更改时)保存在您 swf 中任何地方都可以访问的某个位置(类似于类中的静态变量?甚至是全局 / _root 变量,即使它真的很难看^^),并在每次切换不同屏幕时将该颜色重新应用到您的角色。

于 2012-05-28T15:45:40.220 回答