그래서, 여전히 내 Tamagotchi 스타일 게임에서 작업하고 있으며 별도의 클래스를 사용하고 있으며 여기의 조언에 따라 가능한 경우 중첩 함수를 피하고 있습니다! 그러나 hitTestObject
조건 에 따라 음식을 추가 / 제거하는 코드를 작성 했으며 메인 클래스에서 잘 작동했습니다. 모든 것을 a로 옮기 자마자 Food Class
위의 오류가 발생했습니다. 나는 흔적을 사용하고 주석을 달아 보았습니다 ... 나는 난처합니다. 학습자로서 저는 이걸 깨기 시작 하고 벽에 부딪혀서 내가 실제로 아무것도 모른다는 생각 이 들기 때문에 다소 실망 스럽 습니다.
어쨌든 조언을 부탁드립니다. 다음은 두 클래스에 대한 코드입니다. 다시 한 번 감사합니다!
package {
import flash.display.MovieClip;
import flash.events.KeyboardEvent;
import flash.events.Event;
import DraggableItem;
import Food;
public class Tamagotchi extends MovieClip {
const BG_SPEED:int = 10;
const BG_MINX:int = -270;
const BG_MAXX:int = 0;
const BG_MINY:int = -200;
const BG_MAXY:int = 0;
var bG:BackGround = new BackGround();
var home:Home = new Home();
var soph:SophRun = new SophRun();
var item:DraggableItem=new DraggableItem();
var food:Food = new Food();
public function Tamagotchi() {
addChildAt(bG, 0);
bG.addChild(home);
home.x = 850;
home.y = 80;
addChild(soph);
trace("HI");
soph.x = 350;
soph.y = 250;
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressListener);
stage.addEventListener(Event.ENTER_FRAME, bgScroll);
}
public function keyPressListener(e:KeyboardEvent):void
{
if (e.keyCode == 65)
{
soph.x -= 5;
soph.scaleX = 1;
}
if (e.keyCode == 68)
{
soph.x += 5;
soph.scaleX = -1;
}
if (e.keyCode == 87)
{
soph.y -= 5;
}
if (e.keyCode == 83)
{
soph.y += 5;
}
}//End of KeyPressListener
public function bgScroll(e:Event)
{
if (soph.x > 550 && bG.x > BG_MINX)
{
bG.x -= BG_SPEED;
soph.x -=2;
}
else if (soph.x < 150 && bG.x < BG_MAXX)
{
bG.x += BG_SPEED;
soph.x +=2;
}
else if (soph.y > 400 && bG.y > BG_MINY)
{
bG.y -= BG_SPEED;
soph.y -=2;
}
else if (soph.y < 400 && bG.y < BG_MAXY)
{
bG.y += BG_SPEED;
soph.y +=2;
}
}//End of bgScroll
} //End of Class
} // 패키지 끝
그리고 이것은 Food Class
...
package {
import flash.display.MovieClip;
import flash.events.Event;
import Tamagotchi;
public class Food extends MovieClip{
var food1:Food1 = new Food1();
var food2:Food2 = new Food2();
var food3:Food1 = new Food1();
var food4:Food2 = new Food2();
var foodArray:Array = new Array(food1, food2, food3, food4);
var foodButton:FoodButton = new FoodButton();
var tam:Tamagotchi = new Tamagotchi();
public function Food() {
addChild(foodButton);
foodButton.x = 150;
foodButton.y = 650;
stage.addEventListener(Event.ENTER_FRAME, addingFood);
stage.addEventListener(Event.ENTER_FRAME, eatFood);
}
public function addButton(xpos:int, ypos:int)
{
addChild(foodButton);
foodButton.x = xpos;
foodButton.y = ypos;
}
public function addTheFood()
{
for (var i:int = 0; i < 4; i++)
{
addChild(foodArray[i]);
foodArray[i].x = 900 * Math.random();
foodArray[i].y = 650 * Math.random();
}
}
public function addingFood(e:Event)
{
if (tam.soph.hitTestObject(foodButton))
{
addTheFood();
removeChild(foodButton);
addButton(900 * Math.random(), 650 * Math.random());
}
}
public function eatFood(e:Event)
{
for (var j:int = 0; j < 4; j++)
{
if (tam.soph.hitTestObject(foodArray[j]))
{
removeChild(foodArray[j]);
foodArray[j].x=100000;
trace("Food gone!");
}
}
}
}//End of Class
} // 패키지 끝
계속 귀찮게해서 미안하지만, 이걸 이해하기로 결심하고, 당신이 정말 당신의 물건을 알고있는 것 같아서, 나는 단지 배우려고 노력하고 있습니다! 부드럽게!
다마고치 클래스에서
var food:Food = new Food();
그리고 Food Class에는
var tam:Tamagotchi = new Tamagotchi();
이것은 다소 무한 루프처럼 보입니다 ... (하나가 생성되고 다른 하나가 생성되고 첫 번째가 다시 생성되고 다른 하나가 다시 생성되는 등 ...)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다