【问题标题】:Default variables with multiple developers多个开发人员的默认变量
【发布时间】:2010-02-04 01:58:19
【问题描述】:

这可能是一个奇怪的问题,但我想知道是否有任何方法可以有效地(可能使用命名空间?)在 actionscript 项目中的每个开发人员的类中使用不同的默认变量。我问是因为我们目前正在开发一系列 Flash 游戏:总共 24 个。每个都由一个外壳容器加载。 shell 接收一个用于加载哪个游戏的 flash 变量。在我们的开发环境(Flash/FlashDevelop)中,没有 flashvar,所以 AS 中的一个常量定义了在没有 flashvar 时要加载的游戏:

/** Game to load during debugging if the game param is not set via flashvars. */
public static const DEFAULT_GAME:String = "gameName";

因此,每个开发人员都会将其更改为他们正在开发的游戏。但是,当向存储库 (svn) 提交更改时,开发人员必须将其更改回或撤消更改,并且当其他人更改它时,每个开发人员都必须将其更改为他们的游戏。

想知道是否有一种方法可以在 Flash IDE 或用户特定文件中指定类似于 Flashvars 的默认参数,以便代码可以保持不被 hacky 调试变量影响。我知道在 Flex 中,您可以在 html 模板中设置 flashvar,然后每个开发人员都可以拥有自己的发布文件夹并 svn:ignore 。也许只是让每个开发人员创建一个非提交的 XML 文件来定义他们的用户参数?我不知道,有什么想法吗?!

【问题讨论】:

    标签: flash actionscript-3 collaboration


    【解决方案1】:

    开发人员特定的配置文件往往会起作用。

    在存储库中有一个“默认”配置,带有.default.sample 或附加到文件名的内容,当开发人员第一次签出时,他们复制该文件,删除扩展名并自定义在不影响其他任何人的情况下,随心所欲。

    有没有更好的方法?大概。但是我没找到。

    【讨论】:

    • +1 有一个被 SVN 忽略的开发人员特定文件。很好很容易。
    【解决方案2】:

    您可以在 FLASH IDE 中使用条件编译。

    这是一个代码示例:

    package{
    
        import flash.display.Sprite;
    
        public class Main extends Sprite {
    
            CONFIG::USER_A
            private static const PATH:String="user_a_path";
            CONFIG::USER_B
            private static const PATH:String="user_b_path";
    
            public function Main(){
                trace("current path >",PATH);
            }       
    
        }
    
    }
    

    然后在 flash IDE 编译选项中添加 2 个常量:

    CONFIG::USER_A
    CONFIG::USER_B
    

    并设置值falsetrue用于用户切换

    更多信息here

    【讨论】:

    • 是的,它工作正常 :) 我在答案中添加了指向与条件编译相关的 adobe 帮助的链接
    • 啊,CS4!遗憾的是,我们仍在使用 CS3。很好的提示。我认为这是我所要求的最佳解决方案,所以你赢了。
    【解决方案3】:

    将数据存储在 Local Shared Object 中,然后每个开发人员都可以拥有自己的默认值,而无需任何 hacky 东西。创建一个只能在本地访问的表单,并使用它来查看/编辑默认值。将数据存储在 LSO 中。在应用启动时,检查 FlashVars,如果不存在,检查 LSO。

    【讨论】:

    • 不错的解决方案!也会尝试的。
    • 我认为这将是一个很棒的 AIR 应用程序!
    【解决方案4】:

    你可以用 FDT 做到这一点:

    勾选“编译后打开URI”(调试配置面板)

    并设置 URI:

    bin/main.swf?test="this is a test"&test2="this is a test"
    

    这将作为一个 flashVar。

    【讨论】:

    • 哦,那太好了。我想它必须在 FDT 而不是 Flash 中编译,对吧?这个调试配置面板在哪里?
    • 啊,没关系。我认为 FDT 是另一回事。没有那个。不过,这是一个不错的功能。 Flex 也有类似的功能。
    【解决方案5】:

    有几个解决方案。从编程的角度来看,一个好的方法是拥有一个名为“LocalConfig.as”的单独静态类。

    在您的原始 .as 文件中。会有(伪代码):

    import common.LocalConfig;
    ...
    public static const DEFAULT_GAME:String = LocalConfig.gameName;
    ...
    
    }
    

    让我们使用一个静态类来简化它(伪代码):

    // Static class:
     package
    {
        public class LocalConfig
        {
            public static var gameName:String = "Game1";
    
    
            public function LocalConfig()
            {}
        }
    }
    

    下一步,您将其签入源代码管理中项目的 common/LocalConfig 文件夹。然后,在本地计算机中将其设置为从签出时忽略,因此它在本地用户计算机上不存在。

    最后,您想将其放入与源代码控制进程隔离的程序员的本地“全局包含/通用/”文件夹中。

    编辑:

    删除了我的 Singleton 类引用。使用静态类就足够了。

    【讨论】:

    • 不知道为什么你认为这个类需要是一个单例,并且属性是静态的才有意义,但我会为这个类推荐它。
    • 你是对的。当变量是常量时,单例在这种情况下没有意义
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-07-08
    • 2014-11-25
    • 1970-01-01
    • 2016-08-21
    • 1970-01-01
    • 2016-12-07
    • 1970-01-01
    相关资源
    最近更新 更多