小编Mar*_*nol的帖子

使用TypeScript检查类类型

我对TypeScript感到非常兴奋,所以我开始玩它.作为一个Actionscript开发人员,它使Javascript变得不那么难了.

但是,在Actionscript中,可以使用is运算符在运行时检查类型:

var mySprite:Sprite = new Sprite(); 
trace(mySprite is Sprite); // true 
trace(mySprite is DisplayObject);// true 
trace(mySprite is IEventDispatcher); // true
Run Code Online (Sandbox Code Playgroud)

是否可以检测变量(extends或)是否是TypeScript的某个类或接口?我在语言规范中找不到任何关于它的东西,在使用类/接口时它应该存在.

typechecking typescript

203
推荐指数
4
解决办法
26万
查看次数

从iOS应用程序运行Haxe - hxRunLibrary()错误

对于客户,我开发了一个用于用户界面的iOS + Android应用程序Cordova (PhoneGap).现在,作为这个应用程序的更新,我正在尝试添加一个用Haxe编写的游戏.最初这个游戏是为这个游戏编写的Flash target,但是我已经更新了它以便与C++目标一起工作Android and iOS.

在Android上,很容易Cordova使用活动将其与应用程序集成(Haxe部分作为单独的活动运行),但我在iOS上实现类似结果时遇到一些麻烦.

到目前为止,我已经尝试将所有hxcpp生成的代码包含在我的项目中(就像当你执行"nme build ios"时NME设置XCode项目一样),hxRunLibrary()当我希望游戏运行时,我正在调用我的代码.

问题是hxRunLibrary()似乎想要创建自己的UIApplication实例,由于我的主应用程序已经在运行实例,因此失败并出现以下错误:

*** Assertion failure in void UIApplicationInstantiateSingleton(Class)(), /SourceCache/UIKit_Sim/UIKit-2380.17/UIApplication.m:2037
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'There can only be one UIApplication instance.'
Run Code Online (Sandbox Code Playgroud)

我认为这可能与SDL有关,Haxe将其用于图形.根据我的理解,SDL需要从应用程序的主要功能运行,这与Cocoa产生冲突,也需要从main函数运行.

这有什么简单的方法吗?我查看了hxcpp源代码,但无法找到UIApplication相关代码或SDL的任何条目代码.

也许有人可以指出我正确的方向.谢谢!

haxe hxcpp ios nme

38
推荐指数
1
解决办法
792
查看次数

Haxe在该领域

我最近又重新看了一眼Haxe,并意识到我以前忽略了它的一些优雅.但我想它仍然缺乏开发人员的可见性.

所以我的问题是,这里有人用它来制作吗?如果是这样,你如何使用它?你遇到的问题或困难是什么?你推荐它用于未来的项目吗?

haxe

33
推荐指数
4
解决办法
5529
查看次数

Haxe中的`using`关键字是什么?

我经常看到人们using在他们的Haxe代码中使用关键字.它似乎追随了这些import陈述.

例如,我发现这是一个代码片段:

import haxe.macro.Context;
import haxe.macro.Expr;
import haxe.macro.Type;
using haxe.macro.Tools;
using Lambda;
Run Code Online (Sandbox Code Playgroud)

它做什么以及如何工作?

using haxe

6
推荐指数
1
解决办法
639
查看次数

如何在 Haxe 宏函数中声明实例化

我想创建一个为我生成此代码的宏:

if (myEntity.get(Attack) == null) myEntity.add(new Attack());
if (myEntity.get(Confused) == null) myEntity.add(new Confused());
if (myEntity.get(Defend) == null) myEntity.add(new Defend());
if (myEntity.get(Offense) == null) myEntity.add(new Offense());
Run Code Online (Sandbox Code Playgroud)

在代码中,我想像这样声明/使用它:

EntityMacroUtils.addComponents(myEntity, Attack, Confused, Defend, Offense);
Run Code Online (Sandbox Code Playgroud)

当前的宏函数如下所示:

macro public static function addComponents(entity:ExprOf<Entity>, components:Array<ExprOf<Class<Component>>>):Expr
{
    var exprs:Array<Expr> = [];
    for (componentClass in components)
    {
        var instance = macro $e { new $componentClass() }; // problem is here
        var expr = macro if ($entity.get($componentClass) == null) $entity.add(instance);
        exprs.push(expr);
    }
    return macro $b{ exprs };
}
Run Code Online (Sandbox Code Playgroud)

这个宏函数不正确,我收到错误:

EntityMacroUtils.hx:17:字符 …

macros haxe

5
推荐指数
1
解决办法
695
查看次数

Haxe 的 Haxe 后端?

我知道Haxe编译器是用OCaml编程语言编写的,这对于编译器开发人员来说是一个很好的选择。然而最近我发现了 Luaxe 项目,它似乎是 Haxe 的全功能 Lua 后端,并且是作为纯 Haxe 库开发的。我查看了该项目的代码,它使用某种宏魔法在编译时生成 Lua 源代码。所以我想问是否有可能在不深入OCaml并重建编译器的情况下用纯Haxe实现一个全功能的后端?如果可以的话有什么限制吗?有没有关于如何在纯 Haxe 中实现后端的好文章?

compiler-construction haxe

4
推荐指数
1
解决办法
961
查看次数

基于Haxe编译器版本的条件编译?

Haxe检查版本号时条件编译的确切语法是什么?

根据haxe --help-defineshaxedef为haxe编译器版本是"haxe-ver",我假设在代码中变成"haxe_ver".

所以我想检查版本号是否至少为3.2.0.我最初尝试过:

#if (haxe_ver >= 3.2.0)

但这似乎不起作用.然后我尝试了:

#if !haxe_ver < 3.2.0

这似乎是编译,但我想确定.

haxe conditional-compilation

3
推荐指数
1
解决办法
347
查看次数

功能new或public static main

我是Haxe的新手,可能这是一个非常基本的问题,我无法真正找到答案.

我看到三种调用主类的方法:

1)使用main()

//Entry point
public static main():void{
   //do something...
}
Run Code Online (Sandbox Code Playgroud)

2)使用构造函数new()

//Constructor
public function new(){
   // init
}
Run Code Online (Sandbox Code Playgroud)

3)同时使用main()和new()

static function main()
{
    Lib.window.onload = function(e) new Main();
}

public function new()
{
   //init
}
Run Code Online (Sandbox Code Playgroud)

是否有使用指南或最佳实践?

谢谢

constructor haxe

2
推荐指数
1
解决办法
788
查看次数

haxelib运行<lib>获取用户目录

我正在尝试为我的haxe库创建一些命令,但我遇到了问题.实际上,我想在haxelib run <mylib> <command>发送命令的目录中生成一些文件和目录.

但是,当它运行时,它会在我的lib目录中生成数据(run.n所在的位置).我的路径如下:

Sys.getCwd() + "/myfile.txt"
Run Code Online (Sandbox Code Playgroud)

我也试过了

"myfile.txt"
Run Code Online (Sandbox Code Playgroud)

总是一样的.也许那是因为我安装了我的图书馆haxelib git

flixel-tools有一个命令可以生成一些东西,但是直接用它flixel tpl -n 'name'.他们不使用haxelib run flixel.这就是为什么它适合他们?

谢谢你,如果你有一个想法.

haxe haxelib

2
推荐指数
1
解决办法
272
查看次数

在ActionScript 3中检测uint,int和Number之间的差异

我想获得声明的类型我的号码,但我不知道如何获得它们.所以我用可能的检测方法编写了一个测试:

logNumber(Number(3.5), "Number");
logNumber(Number(3), "Number");
logNumber(Number(-3), "Number");
logNumber(uint(3), "uint")
logNumber(int(3), "int")
logNumber(int(-3), "int")

function logNumber(value:*, expected:String):void
{
    trace("\n\n\n ");
    trace("** Input value: " + value + "\n** Expected: " + expected + "\n")
    trace("getQualifiedClassName: ", getQualifiedClassName(value) + check(getQualifiedClassName(value), expected));

    switch (value)
    {
        case value as uint:
        {
            trace('as: uint' + check('uint', expected));
            break;
        }
        case value as int:
        {
            trace('as: int' + check('int', expected));
            break;
        }
        case value as Number:
        {
            trace('as: Number' + check('Number', expected));
            break;
        }
    }

    if(value …
Run Code Online (Sandbox Code Playgroud)

flash actionscript types numbers actionscript-3

1
推荐指数
1
解决办法
2573
查看次数

jquery找到相同节点名的index()

我有这个设置,只是为了找到一个元素的index(),但它应该查看具有相同节点名的相同级别的元素.

返回的数字不符合预期.查看代码注释.我想filterByNodeNameIndex为'2'.

希望这个示例代码足够清晰:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
    <title>TestDrive</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js"></script>
    <script type="text/javascript" >
        function TestDrive()
        {
            var $obj = $("#div2");
            console.log("$obj.length:" + $obj.length); // returns: 1

            var $filtered = $obj.parent().children($obj[0].nodeName); // find all divs in same parent
            console.log("$filtered.length:" + $filtered.length); // returns: 3 

            var $obj_clone = $filtered.find($obj); // find original element again. Is something wrong here? 
            console.log("$objAgain.length:" + $obj_clone.length); // returns: 0

            var filteredByNodeNameIndex = $obj_clone.index(); // i …
Run Code Online (Sandbox Code Playgroud)

indexing jquery traversal nodename

0
推荐指数
1
解决办法
659
查看次数