Требуется ли для метода hitTestObject проверяемые объекты на сцене? - PullRequest
0 голосов
/ 09 марта 2012

Я просматриваю документацию Adobe здесь , и она не ясна.

Поскольку у меня возникла проблема с приложением, мне интересно, может ли это быть из-за того, что я 'm оценивает два спрайта, один из которых находится на сцене, а другой создан, но без addChild'ed

1 Ответ

1 голос
/ 09 марта 2012

На самом деле ответ зависит от того, на какую платформу вы ориентируетесь.В FlashPlayer , hitTestObject просто проверяет, перекрываются ли ограничивающие рамки объектов, если у вас есть правильные положения x и y, а также правильная ширина и высота для ваших объектов, которые вы надеваетене нужно, чтобы они действительно были на сцене.

Однако в AIR , вероятно, происходит какая-то оптимизация кода, и если один из объектов на самом деле не находится на сцене, он вернет false

Давайтепросто немного повозитесь с примером из документации, удалив только один addChild:

import flash.display.Shape;

var circle1:Shape = new Shape();
circle1.graphics.beginFill(0x0000FF);
circle1.graphics.drawCircle(40, 40, 40);
//addChild(circle1);

var circle2:Shape = new Shape();
circle2.graphics.beginFill(0x00FF00);
circle2.graphics.drawCircle(40, 40, 40);
circle2.x = 50;
addChild(circle2);

var circle3:Shape = new Shape();
circle3.graphics.beginFill(0xFF0000);
circle3.graphics.drawCircle(40, 40, 40);
circle3.x = 100;
circle3.y = 67;
addChild(circle3);

trace(circle1.hitTestObject(circle2)); 
trace(circle1.hitTestObject(circle3));
trace(circle2.hitTestObject(circle3));

В FP10 мы получим следующий вывод:

true
false
true

Однако в AIR мы получим:

false
false
true

Ключевым отличием является то, что hitTestObject между circle1 и circle2 имеет значение false в AIR, поскольку circle1 не был добавлен на сцену, но в FlashPlayer в любом случае имеет значение true.Спасибо @ user1113426 за указание, что здесь что-то не так!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...