小编use*_*585的帖子

从子类调用超类方法 - JavaScript

可能重复:
使用javascript super方法设置属性

我正在尝试用HTML5创建一个简单的游戏以获得乐趣.我有一个Entity类,它应该是Player类的超类.

function Entity(x, y) {

    this.x = x;
    this.y = y;

    this.tick = function() {
        //Do generic stuff
    }
}

function Player(x, y) {

    this.parent.constructor.call(this, x, y);

    this.tick = function() {
        //Do player-specific stuff
        this.parent.tick.call(this);
    }
}

Player.prototype = new Entity();
Player.prototype.constructor = Player;
Player.prototype.parent = Entity.prototype;
Run Code Online (Sandbox Code Playgroud)

问题出在这一行:

this.parent.tick.call(this);
Run Code Online (Sandbox Code Playgroud)

我在chrome的JavaScript控制台中显示错误:"Uncaught TypeError:无法调用未定义的方法'调用'".

我没有得到它,我花了很长时间试图找到类似问题的帖子.我对超类'构造函数的调用工作正常但是对超类'tick方法的调用不起作用.

我对制作游戏非常陌生,所以我不知道这是否是一个好的设置(从子类tick调用超类tick).如果有更好,更典型的方式供人们使用,请告诉我们.

谢谢.

javascript inheritance canvas subclass superclass

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

了解线程+异步

所以我有一个程序,我需要向URL发送很多(如10,000+)GET请求,我需要它尽可能快.当我第一次创建程序时,我只是将连接放入for循环中,但它确实很慢,因为它必须等待每个连接完成才能继续.我想让它更快,所以我尝试使用线程,它使它更快,但我仍然不满意.

我猜测正确的方法是使用异步连接并连接到所有URL.这是正确的方法吗?

此外,我一直在努力了解线程以及它们是如何工作的,但我似乎无法理解它.我所使用的计算机配有Intel Core i7-3610QM四核处理器.根据英特尔网站上有关该处理器的规格,它有8个线程.这是否意味着我可以在Java应用程序中创建8个线程,它们将同时运行?超过8,没有速度增加?

"性能"选项卡下任务管理器中"线程"旁边的数字究竟代表什么?目前,我的任务管理器显示"线程"超过1,000.为什么这是这个数字,如果那是我的所有处理器支持,它怎么能超过8呢?我还注意到,当我尝试使用500个线程作为测试程序时,任务管理器中的数字增加了500但它的速度与我将其设置为使用8个线程相同.因此,如果数量根据我在Java应用程序中使用的线程数增加,那为什么速度相同呢?

另外,我尝试用Java中的线程做一个小测试,但输出对我来说没有意义.这是我的Test类:

import java.text.SimpleDateFormat;
import java.util.Date;

public class Test {

    private static int numThreads = 3;
    private static int numLoops = 100000;
    private static SimpleDateFormat dateFormat = new SimpleDateFormat("[hh:mm:ss] ");

    public static void main(String[] args) throws Exception {

        for (int i=1; i<=numThreads; i++) {
            final int threadNum = i;
            new Thread(new Runnable() {
                public void run() {
                    System.out.println(dateFormat.format(new Date()) + "Start of thread: " + threadNum);
                    for (int i=0; i<numLoops; i++)
                        for (int j=0; j<numLoops; …
Run Code Online (Sandbox Code Playgroud)

java multithreading asynchronous

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

导入前后的 InnoDB 索引

我正在尝试导入一个由 mysqldump 为 InnoDB 表生成的大型 SQL 文件,但即使在调整 my.cnf 中的一些参数并禁用 AUTOCOMMIT(以及 FOREIGN_KEY_CHECKS 和 UNIQUE_CHECKS 但表确实没有任何外键或唯一键)。但我想知道是否因为表中有几个索引而需要这么长时间。

查看 SQL 文件,似乎索引是在插入所有数据之前在 CREATE TABLE 语句中创建的。根据我(有限的)研究和个人经验,我发现在插入所有数据后添加索引会更快。是否不必检查每个 INSERT 的索引?我知道 mysqldump 确实有一个--disable-keys选项可以做到这一点 - 在插入之前禁用键,但显然这只适用于 MyISAM 表而不适用于 InnoDB。

但是为什么 mysqldump 不能在 InnoDB 表的 CREATE TABLE 语句中不包含键,然后在插入所有数据后执行 ALTER TABLE?还是 InnoDB 的工作方式不同,没有速度差异?

谢谢!

mysql sql innodb

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

是否有类似于ArrayList的Java类可以执行此操作?

我有时在编程时遇到这个问题.

想象一下,我有一个包含两列的数据表.第一列有字符串,第二列有整数.

我希望能够将表的每一行存储到动态数组中.因此,数组的每个元素都需要包含一个字符串和一个整数.

以前,我通过将表的每一列拆分为两个单独的ArrayLists来实现这一点,然后当我想添加一行时,我会在每个ArrayList上调用add()方法一次.要删除,我会在同一索引的每个ArrayList上调用remove(index)方法一次.

但是不是有更好的方法吗?我知道有类似HashMap的类,但它们不允许重复键.我正在寻找允许重复输入的东西.

我知道可以做这样的事情:

ArrayList<Object[]> myArray = new ArrayList<Object[]>();
myArray.add(new Object[]{"string", 123});
Run Code Online (Sandbox Code Playgroud)

每次我从数组中获取一个元素时,我真的不想要转换为String和Integer但是这可能是没有创建自己的唯一方法吗?这看起来更让我困惑,我更喜欢使用两个ArrayLists.

那么有没有像ArrayList这样的Java对象,它会像这样工作:

ArrayList<String, Integer> myArray = new ArrayList<String, Integer>();
myArray.add("string", 123);
Run Code Online (Sandbox Code Playgroud)

java arrays arraylist

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

检测 widget 在 Flutter 中何时改变位置

有什么方法可以检测小部件何时改变位置?比如键盘弹出,内容上移?我想在不依赖焦点事件或尝试检测键盘状态的情况下检测到这一点。

这是一个示例应用程序:

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: Center(
          child: MyTextField()
        )
      )
    );
  }
}

class MyTextField extends StatelessWidget {

  @override
  Widget build(BuildContext context) {
    return TextField();
  }

}
Run Code Online (Sandbox Code Playgroud)

MyTextField当它聚焦时,如何检测它何时向上移动?

dart flutter

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