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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 11.02.2014, 12:03
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 21  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

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

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

Регистрация: Jan 2012
Сообщений: 836
Код AS3:
public function createigrok()
	 {
	 _array = [];//создаём массив
     var igrok:player = new player;
	 _array.push(igrok); //Добавляем новый элемент в массив
     igrok.x = 200;
     igrok.y = 300;
	 igrok.name = "ssss";
     addChild(_array[IGROK_ID]);
     trace(igrok);
	}
Код AS3:
 public function clicki()
   {
	    buts.addEventListener(MouseEvent.CLICK, onClicks);
   }
   public function onClicks(e:MouseEvent):void
	 {
       removeChild(_array[IGROK_ID] as DisplayObject);
			_array.splice(IGROK_ID, 1);
     }
Выравнял коды, теперь игрок не создается в циклах, но это не решило проблему

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Ну теперь хоть код видно, спасибо. А это оказывается belv накосячил с циклом то)))
Протрейсите в onClicks — trace(_array[IGROK_ID]); — что напишет? Потому как выглядит уже как мистика, но это оттого, что нам не видна цельная картина, а Вы уже столько там понаписали/накопипастили, что эти куски, которые показываете, ничего не значат. Надеюсь, хоть на таймлайне там у вас никакого кода не осталось?

Добавлено через 2 минуты
И да, Вам действительно нужен массив, у Вас несколько игроков предполагается? Как Вы управлять ими собираетесь?
__________________
Reality.getBounds(this);

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

Регистрация: Jan 2012
Сообщений: 836
Код AS3:
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 = 0;//создаём константу с номером... или лучше не 0, а 0x000000
 private var _array:Array;
 public function Main() 
   {
   btn.addEventListener(MouseEvent.CLICK, onClick);
   }
   public function clicki()
   {
	    buts.addEventListener(MouseEvent.CLICK, onClicks);
   }
   public function onClicks(e:MouseEvent):void
	 {
       removeChild(_array[IGROK_ID] as DisplayObject);
			_array.splice(IGROK_ID, 1);
     }
  public function onClick(e:MouseEvent):void
     {
     if (login.text =="1" && pass.text=="1")
	 {
 	this.gotoAndStop(2);
	createvillage(); 
	createigrok(); 
     }
 else
   {
   res.text = "Вы ввели неправильные данные";
   }
	 }
	public function createigrok()
	 {
	 _array = [];//создаём массив
     var igrok:player = new player;
	 _array.push(igrok); //Добавляем новый элемент в массив
     igrok.x = 200;
     igrok.y = 300;
	 igrok.name = "ssss";
     addChild(_array[IGROK_ID]);
     trace(igrok);
     trace(IGROK_ID);
	}
   public 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);
	}
   }
	}
   }
 
 
 
 
	}
}
Переписал немного код, разделив всё по функциям
Трейс IGROK_ID выдаёт 0. Не пойму никак, что сделано не так. А предполагается только 1 игрок, 1 объект которым надо управлять и то с ним проблема какая-то..жуть...Трейсил не в onClicks, ибо там он ничего не показывает по нажатию

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
У Вас в мейне два кадра?? Убиться веником... Тут я не помощник.
__________________
Reality.getBounds(this);

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

Регистрация: Jan 2012
Сообщений: 836
И чем же плохо иметь 2 кадра?

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
А вот давайте наоборот, Вы мне ответите. К какому кадру относится показанный Вами код?

Я еще могу понять "запрограммировать мультфильм". Но "нарисовать в кадрах программу" это без меня.
__________________
Reality.getBounds(this);

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

Регистрация: Jan 2012
Сообщений: 836
Че значит к какому кадру? Данный код является классом Main, этот класс просто подключается к самой флехе, со ценой и прочим
http://urls.by/1pdr

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

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Вы, может, где-то читали или слышали, как флэш-плеер работает с swf-файлами?
Особенность флэш-технологии в потоковости: плеер может показывать люблй кадр, который уже загрузился. Допустим, у вас мультик из 600 кадров. Так вот, в swf они расположены последовательно, и как только загрузится первый кадр, плеер его отобразит. Загрузится второй — отобразит второй. Примерно как в gif-анимации. Поэтому во всяких Масянях принято было делать предзагрузчик и после него кнопку Старт, чтобы при медленном интернете зритель не смотрел на слоумоушн, а сходил поставил чай и после полной загрузки всех кадров наслаждался нормальным фпс.
Теперь попробуйте представить код Документ-класса, привязанного к мувику из 600 кадров. Очевидно, что конструктор этого класса должен отработать еще ДО показа самого первого кадра. При этом не то что 600-го, а даже второго кадра еще нет в плеере вообще. Как Вы думаете, Вы можете из этого кода обратиться к птичке, которая пролетает по экрану в кадрах с 312-го по 379-й? Можете повесить на нее слушатель клика, например?
__________________
Reality.getBounds(this);

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

Регистрация: Jan 2012
Сообщений: 836
Код AS3:
Как Вы думаете, Вы можете из этого кода обратиться к птичке, которая пролетает по экрану в кадрах с 312-го по 379? Можете повесить на нее слушатель клика, например?
Почему нет? Обычная птичка, дать ей имя и в коде делать что угодно с ней, даже тот же самый клик Оо. Я не могу понять к чему вы это всё

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

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

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


 


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


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