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

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

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

Регистрация: Sep 2010
Сообщений: 167
По умолчанию Дублирование клипа с динамическим изменением переменных

У меня на сцене кнопка и мувиклип с названием slot (в первом кадре внутри клипа в скрипте прописана переменная itemid). По нажатии кнопки скрипт сцены выполняют функцию:

Код AS1/AS2:
var i=0;
cloneclip = function()
{
i++;
var clipname:String = "slot"+i;
var objectname:String = "object"+i;
 
myObject = new Object();
myObject.itemid = i;
name = i;
depth = 100;
this.slot.duplicateMovieClip(clipname, i, myObject);
[clipname].x = 200;
[clipname].y = 200;
 
}
Задача простая: при нажатии кнопки появляется такой же клип рядом с исходным, который имеет имя slot[2,3,4 итд], но у которого внутри переменная itemid имеет другое значение. То есть по обращению к slot2.itemid мы получаем определённое число (здесь: номер копии).

Проблема в том, что клип копируется как надо, и имя тоже меняется. Но опзиция полученного клипа остаётся равной оригиналу (т.е. последние 2 строчки как будто не видят клонированный клип), и переменная тоже отсутствует. Даже введение объекта не помогло.

edit:

Я вообще сомневаюсь насчёт правильности использования duplicateMovieClip. Может стоит использовать attachMovie через переменную типа MovieClip ? Я честно пока учусь и плохо знаком с attachMovie. Если возможно, объясните пожалуйста.


Последний раз редактировалось Alex626; 07.09.2010 в 18:29.
Старый 07.09.2010, 19:45
mooncar вне форума Посмотреть профиль Отправить личное сообщение для mooncar Найти все сообщения от mooncar
  № 2  
Ответить с цитированием
mooncar
Модрон-ветеринар
 
Аватар для mooncar

администратор
Регистрация: May 2009
Адрес: г.Казань
Сообщений: 7,357
Отправить сообщение для mooncar с помощью ICQ Отправить сообщение для mooncar с помощью Skype™
Ошибок у вас там полно.
Код AS1/AS2:
var i:Number = 0;
cloneclip = function()
{
	i++;
	var clipname:String = 'slot' + i;
	//			имя	глубина   доп.свойства
	slot.duplicateMovieClip(clipname,  i,  	 {_x:i * 10, _y:100, itemid:i});
}
Второй вариант, без инит-объекта, явно:
Код AS1/AS2:
var i:Number = 0;
cloneclip = function()
{
	i++;
	var clipname:String = 'slot' + i;
	var mc:MovieClip = slot.duplicateMovieClip(clipname,  i);
	mc._x = i * 10;
	mc._y = 0;
	mc.itemid = i;
}
Да, можно использовать и attachMovie, особенно когда нет необходимости в клипе-оригнинале.
Делаете все аналогично. См. хелп для синтаксиса метода, немного отличается от этого (добавляется библиотечное имя).
__________________
Идите первым!


Последний раз редактировалось mooncar; 07.09.2010 в 19:50.
Старый 08.09.2010, 00:46
Alex626 вне форума Посмотреть профиль Отправить личное сообщение для Alex626 Найти все сообщения от Alex626
  № 3  
Ответить с цитированием
Alex626

Регистрация: Sep 2010
Сообщений: 167
Спасибо вам огромное Теперь всё работает.


У меня есть ещё 2 вопроса.

Скажите пожалуйста, а как можно определить с помощью функции в скрипте на сцене, над каким именно объектом сейчас производятся действия мышью (onPress, onRelease), притом универсально.

И я немного запутался в обращении к клипу с заданием его имени через переменную типа String. Вроде бы синтаксис такой:

Код AS1/AS2:
[переменная].параметр
["slot"+i]._x
Но такое действие не срабатывает.

Старый 08.09.2010, 01:52
NoCD вне форума Посмотреть профиль Отправить личное сообщение для NoCD Найти все сообщения от NoCD
  № 4  
Ответить с цитированием
NoCD
 
Аватар для NoCD

Регистрация: Jan 2006
Адрес: Novosibirsk
Сообщений: 353
Цитата:
Скажите пожалуйста, а как можно определить с помощью функции в скрипте на сцене, над каким именно объектом сейчас производятся действия мышью (onPress, onRelease), притом универсально.
у вас же есть индекс кнопки mc.itemid от него и отталкивайтесь. Если хотите сделать отдельной функцией, то заведите любую переменную, как только будет нажиматься какая либо кнопка этой переменной назначайте индекс кнопки.

Цитата:
И я немного запутался в обращении к клипу с заданием его имени через переменную типа String. Вроде бы синтаксис такой:
Если не хотите париться с такими видами записи: ["slot"+i]._x , то сделайте ссылку на этот объект:
Код AS1/AS2:
var clip = _root["slot"+i];
     clip._x;
так на много удобней.

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

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

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


 


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


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