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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 11.02.2014, 01:42
belv вне форума Посмотреть профиль Отправить личное сообщение для belv Найти все сообщения от belv
  № 11  
Ответить с цитированием
belv
[+1 16.07.13]
[+4 16.07.13]

Регистрация: Oct 2005
Сообщений: 217
Код AS3:
package 
{
 
import flash.display.MovieClip;
import flash.events.MouseEvent;
import flash.text.TextField;
import flash.events.Event;
import flash.display.DisplayObject;
import flash.display.Stage;
 
public class Main extends MovieClip
 
{
 public var map:Array = [
     	[1,1,1,1,1,1,1,1,1,1,1,1],
     	[1,0,0,2,1,1,1,1,1,2,0,1],
     	[1,0,0,0,1,1,1,1,1,0,0,1],
     	[1,0,2,0,0,1,1,1,1,0,1,1],
     	[1,0,1,0,0,0,1,2,0,0,0,0],
     	[1,0,0,1,0,0,1,0,0,0,0,0],
     	[1,1,1,1,0,0,1,0,0,1,1,1],
     	[1,0,0,0,0,0,0,0,0,0,0,1],
     	[1,1,1,1,1,1,1,1,1,1,1,1],
     	];
 
    public var size:uint = 50;
    public var arrayIgrok:Array = [];
 public function Main()
 {
 
 	btn.addEventListener(MouseEvent.CLICK, onClick); }
 
 private function onClick(e:MouseEvent):void{
 
     if (login.text =="login" && pass.text=="pass"){
 	this.gotoAndStop(2);
 
	createvillage(); 
     }
 else
   {
   res.text = "Вы ввели неправильные данные";
 	}
 }
 
   function createvillage()
      {
for (var i:uint=0; i<map.length; i++)
 	{
   for (var j:uint=0; j<map[i].length; j++)
   {
   	if (map[i][j] > 0)
   	{
     var obj:village = new village;
     obj.x = j*size;
     obj.y = i*size;
     obj.gotoAndStop(map[i][j])
     addChild(obj);
 
     Constants.stageRef=stage;
     var igrok:player = new player;
     igrok.x = 200;
     igrok.y = 300;
     igrok.name = "player";
     addChild(igrok);
     arrayIgrok.push(igrok);
 
	 var buts:button = new button;
	 buts.x = 277;
	 buts.y = 540;
	 buts.name = "btns";
	 addChild(buts);
	 buts.addEventListener(MouseEvent.CLICK, onClicks);
 
 }
     function onClicks(e:MouseEvent):void{
	removeChild(MovieClip(arrayIgrok[0]));
        arrayIgrok.splice(0, 1);
     }
	 }
	 }
	 }
   }
 
}
Должно работать, если нет. Тогда прошу прощения, что отнял время.

Старый 11.02.2014, 01:42
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 12  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
Код AS3:
package  
{
	import flash.display.DisplayObject;
	import flash.display.Sprite;
	public class TestClass extends Sprite
	{
		private var _array:Array;
		public function TestClass() 
		{
			_array = [];//создаём массив
			var sprite:Sprite = new Sprite();
			_array.push(sprite);//помещаем туда созданный объект
			addChild(_array[0] as DisplayObject);//так можно добавить элемент массива, если хочется
		}
		private function removeElementsArray():void
		{
			removeChild(_array[0] as DisplayObject);//так удалить
			//но так нужно помнить номера элементов, что сложно
			//по этому можно ...
		}
 
	}
 
}
Код AS3:
package  
{
	import flash.display.DisplayObject;
	import flash.display.Sprite;
	public class TestClass extends Sprite
	{
		private const IGROK_ID:uint = 0;//создаём константу с номером... или лучше не 0, а 0x000000
		private var _array:Array;
		public function TestClass() 
		{
			_array = [];//создаём массив
			var igrok:Sprite = new Sprite();
			_array.push(sprite);//помещаем туда созданный объект
			addChild(_array[IGROK_ID] as DisplayObject);//так можно добавить элемент массива, если хочется
		}
		private function removeElementsArray():void
		{
			removeChild(_array[IGROK_ID] as DisplayObject);//так удалить
			//но так нужно помнить номера элементов, что сложно
			//по этому можно ...
			_array.splice(IGROK_ID, 1);//удаляем ссылку из массива
		}
 
	}
 
}

Старый 11.02.2014, 02:15
Godwarlock вне форума Посмотреть профиль Отправить личное сообщение для Godwarlock Найти все сообщения от Godwarlock
  № 13  
Ответить с цитированием
Godwarlock

Регистрация: Jan 2012
Сообщений: 836
Код AS3:
package 
{
 
import flash.display.MovieClip;
import flash.events.MouseEvent;
import flash.text.TextField;
import flash.events.Event;
import flash.display.DisplayObject;
import flash.display.Stage;
import flash.display.Sprite;
public class Main extends MovieClip
 
{
 public var map:Array = [
     	[1,1,1,1,1,1,1,1,1,1,1,1],
     	[1,0,0,2,1,1,1,1,1,2,0,1],
     	[1,0,0,0,1,1,1,1,1,0,0,1],
     	[1,0,2,0,0,1,1,1,1,0,1,1],
     	[1,0,1,0,0,0,1,2,0,0,0,0],
     	[1,0,0,1,0,0,1,0,0,0,0,0],
     	[1,1,1,1,0,0,1,0,0,1,1,1],
     	[1,0,0,0,0,0,0,0,0,0,0,1],
     	[1,1,1,1,1,1,1,1,1,1,1,1],
     	];
 
    public var size:uint = 50;
   private const IGROK_ID:uint = 0x000000;//создаём константу с номером... или лучше не 0, а 0x000000
		private var _array:Array;
 public function Main()
 {
 
 	btn.addEventListener(MouseEvent.CLICK, onClick); }
 
 private function onClick(e:MouseEvent):void{
 
     if (login.text =="login" && pass.text=="pass"){
 	this.gotoAndStop(2);
 
	createvillage(); 
     }
 else
   {
   res.text = "Вы ввели неправильные данные";
 	}
 
 
   function createvillage()
      {
for (var i:uint=0; i<map.length; i++)
 	{
   for (var j:uint=0; j<map[i].length; j++)
   {
   	if (map[i][j] > 0)
   	{
     var obj:village = new village;
     obj.x = j*size;
     obj.y = i*size;
     obj.gotoAndStop(map[i][j])
     addChild(obj);
 
     Constants.stageRef=stage;
	 _array = [];//создаём массив
     var igrok:player = new player;
	 _array.push(igrok); //Добавляем новый элемент в массив
     igrok.x = 200;
     igrok.y = 300;
     addChild(_array[IGROK_ID] as DisplayObject);
     trace(igrok);
 
	 var buts:button = new button;
	 buts.x = 277;
	 buts.y = 540;
	 buts.name = "btns";
	 addChild(buts);
	 buts.addEventListener(MouseEvent.CLICK, onClicks);
 
 }
     function onClicks(e:MouseEvent):void{
	removeChild(_array[IGROK_ID] as DisplayObject);
 
			_array.splice(IGROK_ID, 1);//удаляем ссылку из массива
     }
	 }
	 }
	 }
   }
 
}
}
Попробовал сделать по аналогии. Выдаёт TypeError: Error #2007: Параметр child не должен быть равен нулю.
at flash.display:isplayObjectContainer/removeChild()
at MethodInfo-8()
К чему я вообще всё это начал. Просто по нажатию на кнопку, должен быть возврат из 2 кадра в 1, но когда он переходит в 1 кадр, все объекты 1ого кадра накладываются поверх созданных объектов второго кадра. А надо чтобы 1 кадр был только с теми объектами, которые в нем находятся(исключая те, что во втором, а вообще если после перехода снова во второй кадр всё останется на свой местах(тобишь если сдвинули объект, перешли в первый кадр, а потом снова вернулись во второй, объект был на том месте, куда его сдвинули), но я не знаю как это проще реализовать, поэтому попытался просто удалить все объекты из второго кадра, при переходе в 1

Старый 11.02.2014, 02:26
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 14  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
А Вы видите этот объект до того, как удаляете?

Старый 11.02.2014, 02:28
Godwarlock вне форума Посмотреть профиль Отправить личное сообщение для Godwarlock Найти все сообщения от Godwarlock
  № 15  
Ответить с цитированием
Godwarlock

Регистрация: Jan 2012
Сообщений: 836
Akopalipsis,да, этим объектом в роли igrok надо управлять, там просто кружочек который двигается по разными направлениям по нажатию клавиш. Сам кружочек - символ, к котором подключен класс player

Старый 11.02.2014, 02:33
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 16  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
Если у Вас всего два класса и Вы этот объект больше не где не не добавляете в список отображения, то ошибки быть не может, ну или я её не вижу. Ждите, может кто-то заметит.

Старый 11.02.2014, 02:36
Godwarlock вне форума Посмотреть профиль Отправить личное сообщение для Godwarlock Найти все сообщения от Godwarlock
  № 17  
Ответить с цитированием
Godwarlock

Регистрация: Jan 2012
Сообщений: 836
Есть еще класс
Код AS3:
package  {
	import flash.display.Stage;
 
	public class Constants {
 
		public static var stageRef;
 
		public function Constants() {
 
		}
 
	}
 
}
Без этого класса и строчки Constants.stageRef=stage; он создает один объект из массива map и выдаёт TypeError: Error #1010: Термин не определен и не имеет свойств.
at player()
at MethodInfo-9()
at Main/onClick()

Старый 11.02.2014, 02:50
Akopalipsis вне форума Посмотреть профиль Найти все сообщения от Akopalipsis
  № 18  
Ответить с цитированием
Akopalipsis
Banned
[+4 24.02.14]
[+4 07.11.13]
[+ 13.03.14]

Регистрация: Mar 2013
Сообщений: 1,864
я имел ввиду, что если бы в другом классе Вы сделали addChild(igrok), то ошибка была бы правильной, так-как контейнер сменился. Но если Вы addChild(igrok) не делаете в другом месте, то я не знаю..

Старый 11.02.2014, 03:33
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 19  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Я вообще не понял зачем там создается 100500 игроков и столько же кнопок.
А за функцию внутри функции вообще бы расстрелял.
__________________
Reality.getBounds(this);

Старый 11.02.2014, 03:46
Godwarlock вне форума Посмотреть профиль Отправить личное сообщение для Godwarlock Найти все сообщения от Godwarlock
  № 20  
Ответить с цитированием
Godwarlock

Регистрация: Jan 2012
Сообщений: 836
В смысле 100500 игроков и кнопок? Там создается только 1 кнопка и 1 игрок.

Создать новую тему Ответ Часовой пояс GMT +4, время: 07:23.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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