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

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

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

Регистрация: Apr 2006
Сообщений: 11
Question Обращение к функции

Здравствуйте еще раз… скажу сразу, что в AS разбираться начинаю с нуля и методом тыка, приходится постоянно комментировать, поэтому коды могут показаться вам смешными, а вопросы непонятными, но попробую ?

Новый документ
Слой (Layer1): рисую кружок, диаметр примерно 38… конвертирую в Button, задаю instance name – butt. Помещаю в нижний правый угол…
Создаю четырехугольную звездочку… высота и ширина 38… конвертирую в MovieClip, instance name – kur. Выношу за пределы поля.
В библиотеке создаю MovieClip, имя – kv, идентификатор – id_kv, в нем по центру рисую прямоугольник 40*40… прямоугольник конвертирую в MovieClip, name – klet… выделяю klet – пишу код:

Код:
on (press) {//обрабатываем событие мувика нажатие мыши 
   koors = new Object();   //Создаем новый объект 
   koors.x = _x;   //Задаем объекту переменную координат _х 
   koors.y = _y;   //Задаем объекту переменную _у 
   localToGlobal(koors); // переводим координаты koors относительно мувика на координаты относительно главного поля 
   _root.kur._x = koors.x; // устанавливаю координату х звездочки 
   _root.kur._y = koors.y; // устанавливаю координату y звездочки 
}
далее перехожу на scene 1, создаю новый слой называю Action, выделяю первый кадр, пишу код:

Код:
kur.swapDepths(16363); //Выставляю глубину курсора, чтобы курсор впоследствии находился НАД клетками а не ниже :) 
//------------------------------------------- 
butt.onPress = function() {   // создаем функцию нажатия кнопки 
   for (bx=1; bx<3; bx++) {   //создаем цикл (короче бх от 1 до 2 путем сложения) 
      for (by=1; by<3; by++) {   //создаем цикл (короче бу от 1 до 2 путем сложения) 
         Field = attachMovie("id_kv", "kv"+bx+by, bx+by*2);   //клонируем мувик kv и присваиваем ему имя "kv"+bx+by  (плюс вроде устанавливаем глубину bx+by*2) 
         Field._x = (bx*40);   // указываем координату х 
         Field._y = (by*40);   // указываем координату у 
      } 
   } 
}; 
//----------------------------------------

запускаем тест, жмем кнопку, получаем сгенерированное поле из 4 клеток… при нажатии на клетку, в клетку устанавливается курсор, она же наша звездочка

А теперь собственно вопросы:
1. хочу убрать весь код из мувика klet оставить в нем только вызов к функции, убранный код хочу вписать в виде функции в слой Action (просто очень не удобно скакать по мувикам когда код нужно изменить) – сам вопрос: как правильно сделать функцию в слое Action и обращение к ней из мувика klet?
2. Как сделать перемещение курсора kur? В смысле что бы курсор переезжал из начальной клетки в клетку по которой щелкнул мышкой…

Пока все… заранее благодарен

Старый 14.06.2006, 17:39
MINASTIS вне форума Посмотреть профиль Отправить личное сообщение для MINASTIS Посетить домашнюю страницу MINASTIS Найти все сообщения от MINASTIS
  № 2  
Ответить с цитированием
MINASTIS
 
Аватар для MINASTIS

Регистрация: Jan 2006
Адрес: Сургут
Сообщений: 897
Отправить сообщение для MINASTIS с помощью Skype™
1.
Код:
function имя_функции (перменные_в_функции) {
всякие операторы\действия
}
Потом вызываешь функцию в любом действии например:

Код:
on (release) {
имя_функции(переменны);
}
Если ты не используешь в функции замены стандартных переменных то оставляй скобки пустыми после вызова функции.

2. СДелай в каком-нить мувике действие (не в кадре мува а на нем)
Код:
onClipEvent (enterFrame) {
if (kur._x < xnew) {
kur._x += 1;
}
if (kur._x > xnew) {
kur._x -= 1;
}
}
Так будет курсор в квадратик перемещаться. Ты конечно понял что новые "х" и "у" надо указывать из середины нажатой клеточки.

Старый 14.06.2006, 19:38
Darki вне форума Посмотреть профиль Отправить личное сообщение для Darki Найти все сообщения от Darki
  № 3  
Ответить с цитированием
Darki

Регистрация: Apr 2006
Сообщений: 11
Большое спасибо, особенно за ответ на второй вопрос...
С первым вопросом все равно остается проблемма... код, который был в мувике klet и стал функцией, не работает... а как сделать не знаю

А и еще... Описанный код на второй вопрос можно ли затолкать в функцию?

Старый 14.06.2006, 20:36
Usnul вне форума Посмотреть профиль Отправить личное сообщение для Usnul Посетить домашнюю страницу Usnul Найти все сообщения от Usnul
  № 4  
Ответить с цитированием
Usnul
 
Аватар для Usnul

Регистрация: Mar 2001
Адрес: во сне
Сообщений: 2,701
Отправить сообщение для Usnul с помощью ICQ
еще проще и правильнее:

запихни это все в первый кадр и убери все остальные скрипты - они ненужны. В аттаче исходник лежит с этим кодом, поможет тебе разобраться.

_root.d - Dimention, размер поля, сколько на сколько.
удаление обьекта не обязательно, так что строку delete myPoint можешь убить. Она служит только для того чтобы лишний мусор не оставался.

Код:
_root.d = 5;
kur.swapDepths(Math.pow(_root.d,2)+1);
butt.onPress = function() {
   for (bx=0; bx<_root.d; bx++) {
      for (by=0; by<_root.d; by++) {
         Field = attachMovie("id_kv", "kv_"+bx+"_"+by, bx+by*_root.d+1);
         Field._x = bx*40;
         Field._y = by*40;
         Field.onPress = function(){
		var myPoint:Object = {x:0, y:0};
		this.localToGlobal(myPoint);
		_root.kur._x = myPoint.x;
		_root.kur._y = myPoint.y;
		delete myPoint;
	}
      } 
   } 
}
ЗЫ
Butt = задница.
Цитата:
Сообщение от www.thefreedictionary.com
butt - the fleshy part of the human body that you sit on; "he deserves a good kick in the butt"; "are you going to sit on your fanny and do nothing?"
Вложения
Тип файла: rar example.rar (4.3 Кб, 37 просмотров)
__________________
I'm only happy when it rains.
Waka Laka

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

Регистрация: Apr 2006
Сообщений: 11
Гыыы... Спасибо Вам огромедное

Старый 14.06.2006, 21:17
Darki вне форума Посмотреть профиль Отправить личное сообщение для Darki Найти все сообщения от Darki
  № 6  
Ответить с цитированием
Darki

Регистрация: Apr 2006
Сообщений: 11
про исходник, у мну MX 2004 Prof 7.0 не открывает его... "unexpeсted file format"

Старый 14.06.2006, 22:36
Usnul вне форума Посмотреть профиль Отправить личное сообщение для Usnul Посетить домашнюю страницу Usnul Найти все сообщения от Usnul
  № 7  
Ответить с цитированием
Usnul
 
Аватар для Usnul

Регистрация: Mar 2001
Адрес: во сне
Сообщений: 2,701
Отправить сообщение для Usnul с помощью ICQ
у мемя Flash 8 чего и вам советую, в нем много нового, одни фильтры чего стоят.
__________________
I'm only happy when it rains.
Waka Laka

Старый 15.06.2006, 10:00
MINASTIS вне форума Посмотреть профиль Отправить личное сообщение для MINASTIS Посетить домашнюю страницу MINASTIS Найти все сообщения от MINASTIS
  № 8  
Ответить с цитированием
MINASTIS
 
Аватар для MINASTIS

Регистрация: Jan 2006
Адрес: Сургут
Сообщений: 897
Отправить сообщение для MINASTIS с помощью Skype™
Ничего подобного! Если человек конечно именно для себя делает флешку тогда 8 - супер! А я вот делаю для людей а у некоторых эта апплет-система установки флеплейера 8 идет боком и не пашет! Тогда они с 7 или 6 сидят флешплейером! А я делаю на 6 макромедия. КОнечно мне приходиться попотеть чтобы без помошников (фильтры, помошник кода) делать флешки, зато оно того стоит. Я никого не осуждаю за вашу версию макромедия, просто оспариваю дурное мнение об "устаревшей" 6 макромедии.

Во нафлудил а.

Старый 15.06.2006, 10:20
Darki вне форума Посмотреть профиль Отправить личное сообщение для Darki Найти все сообщения от Darki
  № 9  
Ответить с цитированием
Darki

Регистрация: Apr 2006
Сообщений: 11
Еще раз спасибо вам обоим, если вы не против, то попозже у мну есть желание закоментировать описанный выше код... щас просто буду эксперементировать с перемещением курсора

Старый 15.06.2006, 16:44
Darki вне форума Посмотреть профиль Отправить личное сообщение для Darki Найти все сообщения от Darki
  № 10  
Ответить с цитированием
Darki

Регистрация: Apr 2006
Сообщений: 11
Здраствуйте, Usnul и Minastis возпользовался вашим кодом, слегка подправил и кой че добавил, затем закоментировал...

Код:
_root.d = 4; //задаем переменную равную 4
speed = 10; //Создаю переменную обозначающую скорость равную 10(именно десять только для того чтобы начальные и конечные координаты совпадали)
kur.swapDepths(Math.pow(_root.d, 2)+1); // устанавливаю глубину курсора (через округление, я так понял)
butt.onPress = function() {	// объявляю событие при нажатии на кнопку Батт :)
	for (bx=0; bx<_root.d; bx++) {	//создаю цикл установки координат по х,  конкретно бх от 0 до переменной _root.d (5) путем сложения
		for (by=0; by<_root.d; by++) {	//создаю цикл установки координат по у, конкретно бу от 0 до переменной _root.d (5) путем сложения
			Field = attachMovie("id_kv", "kv_"+bx+"_"+by, bx+by*_root.d+1);	// создаем клетку,
			Field._x = 20+(bx*40);//устанавливаем клетку по координате х (20 нужно, что бы клетка не вылезала за край поля)
			Field._y = 20+(by*40);//устанавливаем клетку по координате у (20 нужно, что бы клетка не вылезала за край поля)
			Field.onPress = function() {	//объявляю событие при нажатии на клетку
				var myPoint:Object = {x:0, y:0}; //объявляю переменную муПоинт как объект с координатами х=0, у=0
				this.localToGlobal(myPoint); //перевожу координаты в клетке на главные координаты
				//_root.kur._x = myPoint.x; // устанавливаю координаты курсора по х
				//_root.kur._y = myPoint.y; // устанавливаю координаты курсора по у
				bx = myPoint.x;
				by = myPoint.y;
				//delete myPoint; //отключенно ибо неизученна :)
			};
		}
	}
	kur._x = 20; //устанавливаю курсор в первой клетке по х
	kur._y = 20; ////устанавливаю курсор в первой клетке по х
};
за это вам респект и еще раз огромное спасибо, далее я стал эксперементировать с движением курсора... в первом кадре добавил:
Код:
_root.onEnterFrame = function() {
	if (kur._x<bx) {
		kur._x += speed;
	}
	if (kur._x>bx) {
		kur._x -= speed;
	}
	if (_root.kur._y<by) {
	_root.kur._y += speed;
	}
	if (_root.kur._y>by) {
	_root.kur._y -= speed;
	}
};
и все бы хорошо, и двигается, и встает в нужные координаты, но вот проблема: как только создаю клетки кнопкой, курсор становится по координатам 10,10 используя переменную speed, кстати из-за этой же переменной мне не поменять скорость, ибо выставив другие значения курсор отказывается вставать по центру квадратов. Вопрос: Что я сделал не так? или как это исправить?

Заранее Благодарен.

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

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

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


 


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


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