Привет, ребята, я делаю свой университетский проект в этой маленькой игре с тамогачи, где я перетаскиваю вещи на персонаже, а его здоровье или деньги wtv меняются в соответствии с это, и мы должны были сделать это с несколькими классами, поэтому все хорошо, за исключением объекта hitTestObject, если он неправильно регистрируется через разные классы.hitTestObject обнаружение столкновения, даже если нет столкновения, а в другом случае его не регистрируется
Вот мой код и все мои файлы проекта ссылка также прилагается ниже, пожалуйста, помогите:
Ссылка для файлов проекта: https://drive.google.com/folderview?id=0B07PZ7vQgjsteWhVMnItczd2YUE&usp=sharing
Главный класс:
package {
import flash.display.MovieClip;
import flash.events.Event;
import flash.utils.Timer;
public class Main extends MovieClip {
public var addStuff:AddStuff = new AddStuff;
public var hmClass:HealthMoney = new HealthMoney;
public function Main() {
addChild(addStuff.bg);
addStuff.batMan.x = 700;
addStuff.batMan.y = 600;
addChild(addStuff.batMan);
addChild(addStuff.box);
addStuff.box.x = 1050;
addStuff.box.y = 500;
addChild(addStuff.batHealth);
addStuff.batHealth.x = 890;
addStuff.batHealth.y = 430;
addChild(addStuff.dollar);
addStuff.dollar.x = 890;
addStuff.dollar.y = 570;
addChild(addStuff.men);
addStuff.men.x = 800;
addStuff.men.y = 900;
addChild(addStuff.batBurger);
addStuff.batBurger.x = 400;
addStuff.batBurger.y = 900;
addChild(addStuff.batDrink);
addStuff.batDrink.x = 600;
addStuff.batDrink.y = 900;
addChild(addStuff.batMoney);
addStuff.batMoney.x = 850;
addStuff.batMoney.y = 940;
AddHealth();
AddMoney();
}
public function AddHealth(){
hmClass.HealthTimer();
addChild(hmClass.myHealthText);
addEventListener(Event.ENTER_FRAME,Kill);
function Kill(e:Event){
if(hmClass.health <= 0){
hmClass.batLifeTimer.stop();
addStuff.batMan.rotation -= 1;
if(addStuff.batMan.rotation <= -80){
addStuff.batMan.alpha = -5;
}
}
}
}
public function AddMoney(){
addChild(hmClass.myMoneyText);
hmClass.Money();
}
}
}
AddStuff Класс:
package {
public class AddStuff{
public var bg:BG = new BG();
public var batHealth:BatHealth = new BatHealth();
public var batMan:BatMan = new BatMan();
public var batBurger:BatBurger = new BatBurger();
public var batDrink:BatDrink = new BatDrink();
public var batMoney:BatMoney = new BatMoney();
public var men:Men = new Men();
public var box:Box = new Box();
public var dollar:Dollar = new Dollar();
public function AddStuff() {
}
}
}
HealthMoney Класс:
package {
import flash.events.TimerEvent;
import flash.utils.Timer;
import flash.text.TextField;
import flash.events.Event;
import flash.display.MovieClip;
import flash.text.TextFormat;
import flash.events.MouseEvent;
public class HealthMoney extends MovieClip{
public var health:int = 100;
public var money:int = 100;
public var batLifeTimer:Timer = new Timer(1000);
public var myHealthText:TextField = new TextField();
public var myHealthTextFormat:TextFormat = new TextFormat();
public var myMoneyText:TextField = new TextField();
public var myMoneyTextFormat:TextFormat = new TextFormat();
public var addStuffClass:AddStuff = new AddStuff;
public var addStuff1:AddStuff = new AddStuff;
public function HealthMoney() {
// constructor code
}
public function HealthTimer(){
myHealthText.setTextFormat(myHealthTextFormat);
myHealthTextFormat.size = 120;
myHealthTextFormat.color = 0xFFFFFF;
myHealthText.defaultTextFormat = myHealthTextFormat;
//myHealthText.border = true;
myHealthText.x = 970;
myHealthText.y = 350;
myHealthText.width = 200;
myHealthText.height = 120;
batLifeTimer.addEventListener(TimerEvent.TIMER, timerListener);
function timerListener (e:TimerEvent):void{
health--;
//trace(health);
myHealthText.text = health.toString();
}
batLifeTimer.start();
addEventListener(Event.ENTER_FRAME, BatBurger);
function BatBurger(e:Event):void{
if(addStuff1.batMan.hitTestObject(addStuff1.batBurger)){
health++;
//trace("yo");
}
}
}
public function Money():void{
myMoneyText.setTextFormat(myMoneyTextFormat);
myMoneyTextFormat.size = 120;
myMoneyTextFormat.color = 0xFFFFFF;
myMoneyText.defaultTextFormat = myMoneyTextFormat;
myMoneyText.border = true;
myMoneyText.x = 970;
myMoneyText.y = 500;
myMoneyText.width = 500;
myMoneyText.height = 200;
//addChild(myMoneyText);
myMoneyText.text = money.toString();
addEventListener(MouseEvent.MOUSE_UP, AddMoney);
function AddMoney(e:MouseEvent):void{
if(addStuff1.batMoney.hitTestObject(addStuff1.batMan)){
myMoneyText.text = money.toString();
money = money + 100;
trace("hey");
}
}
}
}
}
и DraggableItem Класс:
(этот класс является базовым классом для всех объектов, я хочу, чтобы перетащить)
package {
import flash.events.MouseEvent;
import flash.display.MovieClip;
public class DraggableItem extends MovieClip{
public function DraggableItem() {
addEventListener(MouseEvent.MOUSE_DOWN, startmove);
addEventListener(MouseEvent.MOUSE_UP, stopmove);
}
public function startmove(e:MouseEvent){
this.startDrag();
}
public function stopmove(e:MouseEvent){
this.stopDrag();
}
}
}
поэтому, в чем проблема? Я не вижу hitTestObject в вашем проекте ... где вы тестируете столкновение? – tziuka
проблема в том, что я сделал объект теста хитов, который обнаруживает столкновение между гамбургером и бэтменом, поэтому, когда я перетаскиваю гамбургер на него, его здоровье должно увеличиться на 10, но оно продолжает увеличивать каждый кадр и то же самое с деньгами ничего не происходит когда я бросаю деньги на него – Lev