Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 19.05.2010, 23:49
Igors вне форума Посмотреть профиль Отправить личное сообщение для Igors Найти все сообщения от Igors
  № 1  
Ответить с цитированием
Igors

Регистрация: May 2010
Сообщений: 2
По умолчанию Помогите разобраться с кодом AS 3.0

Сдраствуйте дорогие друзья.ела простеньку игрушку на AS 3.0.Изуча (пс. на клавиатуре некоторые клавиши не пашут все ни как нову не купл...) все это дело совсем недавно.Вобщем застрял с концами рось по поисковикам ну ни как не могу разобраться.Прошу вашей помощи.Постарась обьяснить как смогу доступней.Построил все восновном на первом кадре верхнем слое назвав actions.
Код:
Код AS3:
var monstersInGame:uint;
var monsterMaker:Timer;
var container_mc:MovieClip;
var cursor:MovieClip;
var energy:int;
var score:int;
var live:Number =3;
var myTimer1:Timer;
var monster:MovieClip;
далее функция старта первой комнаты
Код AS3:
function startlevel1():void
 
{
жизни lives это instance name мувика с жизнями,он помещен на сцену
Код AS3:
if(live==3){
	lives.gotoAndStop(3);}
	if(live==2){
	lives.gotoAndStop(2);}
	if(live==1){
	lives.gotoAndStop(1);}

енергия

Код AS3:
energy = 4;
	energy_mc.gotoAndStop(4);
energy_mc тоже instance name мувика добавленного на сцену
количество монстров
Код AS3:
monstersInGame = 8;
 
	monsterMaker = new Timer(1000,monstersInGame);
	container_mc = new MovieClip();
	addChild(container_mc);
слушатели

Код AS3:
stage.addEventListener(MouseEvent.MOUSE_MOVE, dragCursor);
	stage.addEventListener(MouseEvent.CLICK, clickCursor);
	monsterMaker.addEventListener(TimerEvent.TIMER, createMonsters);
 
	monsterMaker.start();
добовляем прицел

Код AS3:
cursor = new Cursor();
	addChild(cursor);
прячем мышь

Код AS3:
Mouse.hide ();
 
 
 
	score = 0;
 
 
}
Далее функция строим монстров

Код AS3:
function createMonsters(event:TimerEvent):void 
{
		monster = new Monster();
	monster.x = Math.random() * stage.stageWidth;
	if (monster.x <= 100) {   
   monster.x = 100;  
  }
  else if (monster.x >= 380) {
   monster.x = 350;
  } 
	monster.y = Math.random() * stage.stageHeight;
	if (monster.y <= 100)
	{   
   monster.y = 100;  
    }
  else if (monster.y >= 380)
  {
   monster.y = 350;
  }
	container_mc.addChild(monster);
код мувика монстр который мы добовляем в container_mc на сцену и по нему стреляем
весь код находится на первом кадре мувика монстр
Код AS3:
import fl.motion.Animator;
import fl.motion.MotionEvent;
это classic tween скопированный для AS 3.0
Код AS3:
var this_xml:XML = <Motion duration="30" xmlns="fl.motion.*" xmlns:geom="flash.geom.*" xmlns:filters="flash.filters.*">
	<source>
		<Source frameRate="12" x="185.3" y="253.3" scaleX="1" scaleY="1" rotation="0" elementType="movie clip" symbolName="Monster" class="Monster">
			<dimensions>
				<geom:Rectangle left="-52.65" top="-42.65" width="100" height="82"/>
			</dimensions>
			<transformationPoint>
				<geom:Point x="0.5005" y="0.500609756097561"/>
			</transformationPoint>
		</Source>
	</source>
 
	<Keyframe index="0" tweenSnap="true" tweenSync="true">
		<tweens>
			<SimpleEase ease="0"/>
		</tweens>
	</Keyframe>
 
	<Keyframe index="29" x="124" y="-60.95000000000002" scaleX="1.52" scaleY="1.415"/>
 
</Motion>;
 
 
var this_animator:Animator = new Animator(this_xml, this);
this_animator.play();
далее идут функции убить монстра проиграли и выграли
Код AS3:
this_animator.addEventListener(MotionEvent.MOTION_END, hurtPlayer);
 
 
function hurtPlayer (Event:MotionEvent): void
{
	var main:MovieClip = MovieClip(this.parent.parent);
 
	main.lose();
 
	this.parent.removeChild(this);
}
 
 
this.addEventListener(MouseEvent.CLICK, killMonster);
 
function killMonster(event:MouseEvent):void
{
gotoAndPlay(31)
this_animator = new Animator(this_xml, this);
this_animator.play();
this_animator.addEventListener(MotionEvent.MOTION_END, die);
 
 
 
 
}
 
function die(event:MotionEvent):void
{
	var main:MovieClip = MovieClip(this.parent.parent);
	main.win();
 
	this_animator.removeEventListener(MotionEvent.MOTION_END, hurtPlayer);
	this.parent.removeChild(this);
}
далее функция прицела
Код AS3:
 
function dragCursor(event:MouseEvent):void 
{
	cursor.x = this.mouseX;
	cursor.y = this.mouseY;
}
далее функция победили
Код AS3:
function win():void 
{
score ++;
if(score >= 6)
{
 
	monsterMaker.stop();
 
	removeChild(cursor)
 
	stage.removeEventListener(MouseEvent.MOUSE_MOVE, dragCursor);
	stage.removeEventListener(MouseEvent.CLICK, clickCursor);
	removeChild(container_mc);
 
 
gotoAndStop(4);
с этого кадра например пойдем на втору комнату

Код AS3:
 
}
 
}
далее проиграли вот тут все проблемы которые я ни как не могу решить как уже ток не ставил не двигал
Код AS3:
function lose():void // if lose level 1
{
energy --;
если добовля вот это

if(energy==4){
energy_mc.gotoAndStop(4);}
if(energy==3){
energy_mc.gotoAndStop(3);}
if (energy==2){
energy_mc.gotoAndStop(2);}
if(energy==1){
energy_mc.gotoAndStop(1);}
if(energy==0){
energy_mc.gotoAndStop(1);}

то игра играется но вылетает такая ошибка TypeError: Error #1009: Cannot access a property or method of a null object reference.
at Monster/hurtPlayer()
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at fl.motion::AnimatorBase/end()
at fl.motion::AnimatorBase/handleLastFrame()
at fl.motion::AnimatorBase/nextFrame()
at fl.motion::AnimatorBase/handleEnterFrame()
в debug мне выводит ошибку с клипа монстра с функции

function hurtPlayer (Event:MotionEvent): void
{
var main:MovieClip = MovieClip(this.parent.parent);"

вот эту строку там где мы проиграли "main.lose();

this.parent.removeChild(this);
}

Если убрать if(energy==3){
energy_mc.gotoAndStop(3);}...." то тогда начинает жаловатьсЯ на все убираемые Child removeChild(container_mc);
removeChild(cursor)
removeChild(gun)
removeChild(units)
выдает таку ошибку ArgumentError: Error #2025: The supplied DisplayObject must be a child of the caller.
at flash.display:isplayObjectContainer/removeChild()
at smoe_fla::MainTimeline/decreaseEnergy()
Код AS3:
 
if(energy <= 1)
{
live--;
 
	monsterMaker.stop();
	removeChild(container_mc);
	removeChild(cursor)
	removeChild(gun)
	removeChild(units)
	Mouse.show();
	stage.removeEventListener(MouseEvent.MOUSE_MOVE, dragCursor);
	stage.removeEventListener(MouseEvent.CLICK, clickCursor);
 
if (live==0)
{
gotoAndStop(1);
тут например самое начало старт игры
Код AS3:
}
 
 
 
else 
{
 
	gotoAndStop(3);
тут например продолжить игру и перейти на второй кадр где распологается startlevel1();
Код AS3:
 
}
}
}
И такие же ошибки в случае если мы выграли.Подскажите пожалуйста как правельно строить функции проиграли выграли,поскольку ч то туда не поставл все ему не нравится.Спасибо.Хотел по понятней обьяснить но кажется все в кашу получилось.

Добавлено через 4 минуты
Да в функции function win где выграли там та же проблема с Child что и прогиграли.Прошу строго не судить если не в ту тему .Мучась уже очень долго ,прошу помощи.


Последний раз редактировалось Igors; 20.05.2010 в 00:24.
Старый 20.05.2010, 00:01
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 2  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
Оформите код тегами [AS3][/AS3]


Последний раз редактировалось i.o.; 20.05.2010 в 00:05.
Создать новую тему Ответ Часовой пояс GMT +4, время: 13:23.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 13:23.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.