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

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

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

Регистрация: Oct 2008
Сообщений: 52
Question передача значений параметров из *.Fla в функцию(метод) подкласса

Собственно вопрос.

У меня есть СуперКласс, подкласс и fla файл с прилепленным суперклассом:
СуперКласс(SuperClass.as):

Код AS3:
package com.GameClass.Superclass 
 
{import flash.display.MovieClip;
import flash.events.*; //???
import flash.ui.* ;
import flash.external.*;
 
public class SuperClass extends MovieClip
{ 
public function SuperClass(){
trace("Привет");}
 
}}

подкласс(to_path.as):

Код AS3:
package com.GameClass.control 
{ 
import com.GameClass.Superclass.SuperClass;
import flash.events.*; //??? Тут я описал флеш-класс, но можно было сделать так чтобы подкласс
//наследовал все подключаемые флеш-классы из родительского класса(Суперкласса)??
public class to_path extends SuperClass
{ 
public function to_path(button_name,moveclip_name,to_path:String) /* Вот та самая функция */
 
{ 
super();
button_name.addEventListener(MouseEvent.MOUSE_DOWN, todo); /* кнопка слушает на нажатии мышки */
function todo(e:MouseEvent):void {  // функция обработки
moveclip_name.gotoAndStop(to_path);};
} 
 
} 
}
FLA:

Код AS3:
import com.GameClass.control.to_path; 
this.stop();
 
to_path.to_path(panel.b1,stage,"t2"); /*???
я попробовал так передать параметры функции подкласса to_path, но выдается ошибка 
"1061: Call to a possibly undefined method to_path through a reference with static type Class." 
если закомментировать эту строчку ролик работает, но без нужной функции. */
Еще вопрос если в моем СуперКлассе импортированы флеш-классы (допустим flash.events.*; ), то не будет ли наследовать подкласс импортированные классы в Суперклассе??? Т.е. я допустим не хочу импортировать каждый раз одни и те же флеш-классы в подклассы, а хочу описать их 1-н раз в суперклассе -чтобы они были доступны всем его подклассам.


Последний раз редактировалось nickorsk; 19.12.2009 в 14:15.
Старый 19.12.2009, 14:34
Obi вне форума Посмотреть профиль Отправить личное сообщение для Obi Найти все сообщения от Obi
  № 2  
Ответить с цитированием
Obi
 
Аватар для Obi

Регистрация: Nov 2007
Адрес: Moscow
Сообщений: 566
Что за жесть вы понаписали? Имена классов — ТОЛЬКО с большой буквы. Имена пакетов — ТОЛЬКО с маленькой. Имена методов — с маленькой.

to_path.to_path — это что такое? Вы пытаетесь конструктор вручную вызвать? Конструктор автоматически вызывается при создании экземпляра класса.
__________________
#flasher@irc.trg.ru:6667

Старый 19.12.2009, 16:01
nickorsk вне форума Посмотреть профиль Отправить личное сообщение для nickorsk Найти все сообщения от nickorsk
  № 3  
Ответить с цитированием
nickorsk

Регистрация: Oct 2008
Сообщений: 52
>Obi
Собственно вопрос в другом состоял.
НА счет имен, вы совершенно не правы, не имеет значения с какой буквы что описывать. Например если задана структура /Gameclass/Control/control.as
При описании пакета:
Код AS3:
package Gameclass.Control
При импорте класса:
Код AS3:
import Gameclass.Control.control.as;
Все будет работать)))
Потому что важно не то с какой буквы описывать, а важно то чтобы описание совпадало с иерархической структурой проекта -в общем сами поробуйте. Можно даже писать так

Код AS3:
gameclass.Control.control.as;
- это просто путь к классу, а как названы папки с большой буквы или с маленькой -не важно, главное учитывать регистр при прописи пути к классам.

П.С. Вопрос я задал не про это.


Последний раз редактировалось nickorsk; 19.12.2009 в 16:05.
Старый 19.12.2009, 16:08
Zik. вне форума Посмотреть профиль Отправить личное сообщение для Zik. Найти все сообщения от Zik.
  № 4  
Ответить с цитированием
Zik.
 
Аватар для Zik.

Регистрация: Nov 2007
Сообщений: 1,724
Так-то работает, но кодерами принято писать как описал Obi

Старый 19.12.2009, 16:13
nickorsk вне форума Посмотреть профиль Отправить личное сообщение для nickorsk Найти все сообщения от nickorsk
  № 5  
Ответить с цитированием
nickorsk

Регистрация: Oct 2008
Сообщений: 52
Кому как нравиться)))
Просто учитывается регистр, собственно как во всех приложениях основанных на стандартах C++
Суть в том что ошибки в данном случаи никакой нет на счет букв.

Мне интересно другие вопросы.

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

Регистрация: Jan 2009
Сообщений: 1,651
если хотите заниматься программированием - тогда пишите так, как принято, чтобы другие не ломали глаза, читая ваш код, или вас просто не возьмут на работу. Есть мелкие разногласия, типа переноса "{" и префиксов в названиях функций/свойств класса, но так же есть общепринятые нормы.

конкретно по вопросам:
Цитата:
Еще вопрос если в моем СуперКлассе импортированы флеш-классы (допустим flash.events.*; ), то не будет ли наследовать подкласс импортированные классы в Суперклассе???
Нет так нельзя. Это синтаксис языка, так задумано.
Вообще говоря импорт ничего не делает, кроме как указывает компилятору где глядеть классы, которые вы упомянули в коде. Если поставить импорт import flash.events.*; - это не значит, что ваша флешка станет на весь пакет flash.events.* тяжелее.
Код AS3:
to_path.to_path(panel.b1,stage,"t2"); /*???
здесь ты написал полный бред. У тебя есть экземпляр класса to_path, чтобы вызывать его функцию? Так какого черта ты пытаешься ее вызвать? Именно по-этому программеры и называют классы с большой буквы, чтобы не путаться, где экземпляр класса, а где обращение к классу.
__________________
мой пустой блог

Старый 19.12.2009, 17:56
nickorsk вне форума Посмотреть профиль Отправить личное сообщение для nickorsk Найти все сообщения от nickorsk
  № 7  
Ответить с цитированием
nickorsk

Регистрация: Oct 2008
Сообщений: 52
Отредактировал так:
СуперКласс:

Код AS3:
package com.gameclass.superclass 
{import flash.display.MovieClip;
import flash.events.*;
import flash.ui.* ;
import flash.external.*;
public class SuperClass extends MovieClip
{ 
public function SuperClass (str:String = null)
{
trace(str);
}
}}
Подкласс:
Код AS3:
package com.gameclass.control 
{ 
import com.gameclass.superclass.SuperClass;
 
public class ToPath extends SuperClass
{  
public function ToPath()
{super("привет");}
public function patha(button_name,moveclip_name,to_path:String) 
 
{button_name.addEventListener(MouseEvent.MOUSE_DOWN, todo);
function todo(e:MouseEvent):void {  
moveclip_name.gotoAndStop(to_path);};
 
 /*функция, при нажатии кнопку "button_name" переводит в объекте "moveclip_name"  на кадр с значением имени "to_path" */
 
 
} 
} 
}
Fla:

Код AS3:
//import com.gameclass.superclass.SuperClass;
import flash.events.*;
import com.gameclass.control.ToPath; 
 
var closepaneler:int; 
closepaneler=0;
 
var path:ToPath = new ToPath(); 
//var sup:SuperClass= new SuperClass();
 
 
this.stop();
 
path.patha(panel.b4,this,"t2"); // тут я подставляю значения в мою функцию patha, описанную в подклассе ToPath.
 
closepanel.addEventListener(MouseEvent.MOUSE_DOWN, closepan); // кнопка слушает на нажатии мышки
function closepan(e:MouseEvent):void {  // функция обработки
if (closepaneler==0){
    panel.visible=false; closepaneler=1;
	m1.gotoAndStop("t2");}else{
	panel.visible=true;closepaneler=0;
	m1.gotoAndStop("t1");}
	}
НО выдается ошибка, хотя ролик запускается:
Код AS3:
Error: Error #2136: SWF-файл file:///C|/Documents%20and%20Settings/nickorsk/Desktop/My%20game/file1.swf содержит недопустимые данные.
	at com.gameclass.control::ToPath/frame2()
Добавлено через 5 часов 31 минуту
Я уже все сам сделал)))

Суперкласс вообще не нужен, наоборот надо использовать несовмещенные классы в моем случаи.

Вот такой вопрос, в коде многих сред программирования есть такая очень полезная штука - как переход на метку в коде , при определенном условии - типа goto метка
Во Flash мне как раз нужен переход на метку в коде. Допустим мне при выполнении условия инструкции if в теле функции нужно сразу игнорируя определенный нижний кусок кода перейти в более нижнюю часть кода тела функции, т.е. к метке строки кода.
НУ а если условие инструкции if не выполнено, то дальше продолжать выполнять тело функции.
Если такая возможность в FLASH??


Последний раз редактировалось nickorsk; 19.12.2009 в 23:28.
Старый 20.12.2009, 02:29
GentleFLASH вне форума Посмотреть профиль Отправить личное сообщение для GentleFLASH Найти все сообщения от GentleFLASH
  № 8  
Ответить с цитированием
GentleFLASH

Регистрация: Apr 2009
Сообщений: 117
goto отсутствует так же как и sleep

Старый 20.12.2009, 14:05
nickorsk вне форума Посмотреть профиль Отправить личное сообщение для nickorsk Найти все сообщения от nickorsk
  № 9  
Ответить с цитированием
nickorsk

Регистрация: Oct 2008
Сообщений: 52
Понятно, Спасибо за ответы.

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

Регистрация: Nov 2007
Адрес: Moscow
Сообщений: 566
В своем посте я предположил в чем у вас может быть проблема:
Цитата:
1061: Call to a possibly undefined method to_path
Цитата:
to_path.to_path — это что такое? Вы пытаетесь конструктор вручную вызвать? Конструктор автоматически вызывается при создании экземпляра класса.
Ну и да, очень сложно у вас код читать, по этому чтобы сразу сказать где у вас проблема, нужно сначала три раза перечитать код исходников. На втором с половиной разе мне надоело и я написал свой пост
__________________
#flasher@irc.trg.ru:6667

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

Теги
Подклассы , Сабклассы , Супер Классы

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

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


 


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


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