小编Tom*_*Tom的帖子

Actionscript TCP Socket无法为某些人发送消息

我编写了一个套接字服务器,它使用Socket类与我的actionscript 3 flash游戏进行通信.这是一个TCP连接,我认为这意味着它100%确定服务器将接收发送消息,因为这是低级别的.因此,如果它无法发送,它将重新发送消息.

这对我和其他两个人来说似乎都是这样,我已经测试了我的构建.然而,对于一个人,有时(罕见但不可忽略),服务器不接收该消息,即使这对其他人的系统似乎没有发生.然而,这个人从来没有遇到任何其他专业多人游戏的问题,这意味着它必须是我的构建问题.

有什么我可以做的,以确保正确发送消息,我错误的TCP 100%安全,因为消息应该在故障低级别重新发送?

sockets flash tcp actionscript-3

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

如何在actionscript 3中设置xml元素的变量属性?

应该很容易的事情一直是我一天的追求.

如何设置xml元素的变量属性?

这是我期望的工作:

xmlElement.attribute(variableAttr) = "the variable attribute is set to this string";
Run Code Online (Sandbox Code Playgroud)

但是,我收到一些错误,该值只能作为引用检索而不能设置.

当然,以下内容不起作用,因为它将查找名为"variableAttr"的属性,而不是查找变量variableAttr的值后面的属性:

xmlElement.@variableAttr = "example";
Run Code Online (Sandbox Code Playgroud)

xml variables dynamic actionscript-3

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

为什么对rt.jar进行简单更改会导致Java Runtime Environment无声崩溃?

这就是我正在做的事情:

  1. 提取我的JRE的rt.jar的内容
  2. 提取我的JDK的src.zip(相同版本)

现在,如果我从提取的src文件夹中复制Runtime.java并使用javac.exe进行编译而不进行任何修改,然后将其放入解压缩的rt文件夹中,最后使用jar.exe将所有内容放回到jar文件中,一切都按预期工作.JRE运行良好.

但是,如果我对Runtime.java进行最轻微的更改并将其编译并放入rt.jar,那么只要我尝试启动它,JRE就会崩溃.这是导致无声崩溃的轻微更改的示例:

/** Don't let anyone else instantiate this class */
    private Runtime() {
        System.out.println("This is a test.");
    }
Run Code Online (Sandbox Code Playgroud)

代替:

/** Don't let anyone else instantiate this class */
    private Runtime() {}
Run Code Online (Sandbox Code Playgroud)

谁能告诉我为什么这会导致我的JRE崩溃?

提前致谢.

java crash compilation reverse-engineering

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

如何检测某个范围(部分)是否位于其他范围内?

让我们说我有两个正方形,我知道他们的位置,红色和蓝色方块:

redTopX;
redTopY;
redBotX;
redBotY;
blueTopX;
blueTopY;
blueBotX;
blueBotY;
Run Code Online (Sandbox Code Playgroud)

现在,我想检查方形蓝色是否位于(或部分)方形红色内(部分).这可能发生在很多情况下,正如您在我创建的图像中看到的那样,可以更好地说明我的情况: 替代文字http://www.feedpostal.com/etc/ranges.gif

请注意,总是只有一个蓝色和一个红色方块,我只是添加了多个,所以我不需要重绘18次.

我原来的逻辑很简单,我检查方形蓝色的所有角落,看看它们是否在方形红色内:

if (
((redTopX >= blueTopX) && (redTopY >= blueTopY) && (redTopX <= blueBotX) && (redTopY <= blueBotY)) || //top left
((redBotX >= blueTopX) && (redTopY >= blueTopY) && (redBotX <= blueBotX) && (redTopY <= blueBotY)) || //top right
((redTopX >= blueTopX) && (redBotY >= blueTopY) && (redTopX <= blueBotX) && (redBotY <= blueBotY)) || //bottom left
((redBotX >= blueTopX) && (redBotY >= blueTopY) && (redBotX <= blueBotX) …
Run Code Online (Sandbox Code Playgroud)

algorithm math tree comparison

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

高级语言中的松散编程,如何,为什么以及多少?

我在Haxe编写代码.这与问题完全无关,只要你记住它是一种高级语言,并且可以与Java,ActionScript,JavaScript,C#等进行比较(我在这里使用伪代码).

我打算做一个大项目,现在正忙着准备.对于这个问题,我将创建一个小方案:一个简单的应用程序,它有一个Main类(这个在应用程序启动时执行)和一个LoginScreen类(这基本上是一个加载登录屏幕的类,以便用户可以登录).

通常我认为这将如下所示:

Main constructor:
loginScreen = new LoginScreen()
loginScreen.load();

LoginScreen load():
niceBackground = loader.loadBitmap("somebg.png");
someButton = new gui.customButton();
someButton.onClick = buttonIsPressed;

LoginScreen buttonIsPressed():
socketConnection = new network.SocketConnection();
socketConnection.connect(host, ip);
socketConnection.write("login#auth#username#password");
socketConnection.onData = gotAuthConfirmation;

LoginScreen gotAuthConfirmation(response):
if response == "success" {
   //login success.. continue
}
Run Code Online (Sandbox Code Playgroud)

这个简单的场景为我们的类添加了以下依赖关系和缺点:

  • 如果没有LoginScreen,Main将无法加载
  • 如果没有自定义装入程序类,则不会加载LoginScreen
  • 没有我们的自定义按钮类,将无法加载LoginScreen
  • 没有我们的自定义SocketConnection类,将无法加载LoginScreen
  • SocketConnection(将来必须由很多不同的类访问)现在已经在LoginScreen中设置了,除了LoginScreen第一次需要套接字连接这一事实上,它实际上与它无关.

为了解决这些问题,我被建议做"事件驱动编程"或松散耦合.据我所知,这基本上意味着必须使类彼此独立,然后将它们绑定在不同的绑定器中.

问题1:我的观点是真是假?是否必须使用粘合剂?

我听说面向方面编程可以在这里提供帮助.不幸的是,Haxe不支持此配置.

但是,我确实可以访问一个事件库,它基本上允许我创建一个signaller(public var loginPressedSignaller = new Signaller()),触发一个signaller(loginPressedSignaller.fire())并监听一个signalller(someClass.loginPressedSignaller) .bind(doSomethingWhenLoginPressed)).

所以,经过进一步的调查,我认为这会改变我之前的设置:

Main:
public var appLaunchedSignaller = new Signaller();

Main constructor:
appLaunchedSignaller.fire();

LoginScreen:
public var loginPressedSignaller = new Signaller();

LoginScreen …
Run Code Online (Sandbox Code Playgroud)

oop events aop functional-programming haxe

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

Java:d​​o方法是否继承了JRE超类,就像继承Object一样?

据我所知,一切都是Java中的一个对象.

我正在浏览java JDK并正在尝试创建一个允许我执行更多调试操作的自定义JDK.例如,我可以通过更改Object.java类来操作每个对象.

我的问题是:方法是否也从JRE继承了一个类,所以我可以将这个父类修改为例如.制作一个方法保存它最近传递的参数?

谢谢.

java methods inheritance object

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

500个航路点/节点的最短路径算法(例如Dijkstra)?

我在这里询问了一个最短路径算法: 2D航路点寻路:WP的组合从curLocation到targetLocation

(要了解我的情况,请阅读该问题以及此问题.)

似乎Dijkstra最短路径算法能够做到我需要的.但是,我的路线图中有大约500到1000个节点.

到目前为止,我所看到的实现将节点数限制在50以下.我的问题是:我是否应该使用Dijkstra最短路径算法,还是替代?Java中是否有任何实现?

java artificial-intelligence dijkstra path-finding graph-algorithm

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

Zend自定义路由未被控制器识别

我正在创建一个控制器,它将从数据库中提取画家的信息并显示出来:PainterController.我这样定义它:

<?php
class PainterController extends Zend_Controller_Action
{

    public function init()
    {
        //setup painter route
        $router = $this->getFrontController()->getRouter();
        $router->addRoute(
            'painter',
            new Zend_Controller_Router_Route(
                'painter/:id',
                array(
                    'controller' => 'painter',
                    'action' => 'info'
                )
            )
        );
    }

    public function indexAction()
    {
        //index
    }

    public function infoAction()
    {
        //info was requested for given ID
    }
}
?>
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,路由设置为接受类似于domain.com/painter/12此示例中的id 12传递给infoAction的任何内容.

然而,当我访问这样的URL时,路由未被识别,而是我得到:

Message: Action "2" does not exist and was not trapped in __call()

Stack trace:

#0 /home/httpd/vhosts/xxx.com/subdomains/peter/httpdocs/library/Zend/Controller/Action.php(515): Zend_Controller_Action->__call('2Action', Array)
#1 /home/httpd/vhosts/xxx.com/subdomains/peter/httpdocs/library/Zend/Controller/Dispatcher/Standard.php(295): Zend_Controller_Action->dispatch('2Action') …
Run Code Online (Sandbox Code Playgroud)

php routing zend-framework zend-route

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

Zend解码表单输入元素中的html实体会导致空值

我有一个表单元素,称为metaDescription:

        //inside the form
        $description = $this    -> createElement('text', 'metaDescription')
                                -> setLabel('Description:')
                                -> setRequired(false)
                                -> addFilter('StringTrim')
                                -> addValidator('StringLength', array(0, 300))
                                -> addErrorMessage('Invalid description.');               
        $this->addElement($description);
Run Code Online (Sandbox Code Playgroud)

无论何时加载此表单,我都会使用从数据库中提取的默认值对其进行初始化:

$form->setDefault('metaDescription', $oldPage->getMetaDescription());
Run Code Online (Sandbox Code Playgroud)

这完全没问题.

但是,htmlencode当有人发送表单和html_entity_decode从数据库中提取的默认值时,我现在想要任何输入描述,以便字符再次以其原始形状显示.

我在处理表单输入时这样做:

//handle post
        if ($request->isPost()) {
            if ($form->isValid($request->getPost())) {
                $page = new Application_Model_PagePainter(array(
                    'metaDescription'   => htmlentities($form->getValue('metaDescription'))
                ));
                $pageMapper->save($page);

                ....
Run Code Online (Sandbox Code Playgroud)

我现在设置默认值,如下所示:

$form->setDefault('metaDescription', html_entity_decode($oldPage->getMetaDescription()));
Run Code Online (Sandbox Code Playgroud)

起初,这似乎也很好.当我发送例如woord1, woord2, me&you描述时,这正确地保存woord1, woord2, me&amp;you在数据库中并再次正确显示为woord1, woord2, me&you.但是,当我设置一个像ó这样的奇怪角色时,例如.wóórd1这被正确地保存在数据库中,w&oacute;&oacute;rd1但随后发生了一些奇怪的事情:当再次显示表单时,默认值为空.当我看到来源时,它确实是空的:<input type="text" name="metaDescription" id="metaDescription" value="" /> …

php forms encoding zend-framework zend-form

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

断开连接后Socket.io套接字数据可用性

当使用socket.io(node.js)触发套接字断开连接事件时,套接字的数据仍可用多长时间?

如果我有一个异步返回数据的商店(如redis),那么仍然可以安全地执行查找吗?

我需要获取套接字的所有数据,以便在断开连接时保存套接字的状态.

非常感谢.

disconnect node.js socket.io

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