Просмотр полной версии : Объектный совет
4thDimention
24.11.2005, 14:48
Доброе время суток Вам!!!
В ходе реализации одного проэкта у меня возникло небольшое затруднение.. помогите советом!
Разработка мини-игры а-ля Магазин одежды. Существует около 30 мувиков одежды, они должны обладать почти одинаковыми параметрами... и для всех необходимо назначить onRelease...
пробовал сделать так:
var obj:Object = {
this.prototype.onRelease:function()
{
trace("something is gooing on!");
},
drop_point_x:0,
drop_point_y:0,
lib_name: ""
}
var dress = new obj();
но компилятор ругается на функцию и на var dress...
Что и как мне сделать???
ты вообще понял что ты написал? у Object нету события onRelease , что означает :function() ? это ошибка синтаксическая, или вот это _y:0 ? купи книжек выучи синтаксис.
4thDimention
24.11.2005, 15:33
по книге и учусь... =(
Цитата кода из книги Дмитрия Гурского "Action Script 2.0"
var obj:Object={a:l,b:2,func:function():Void {trace (a)}};
var a:String-"Привет"; // Создаем переменную, имя которой совпадает
// с именем свойства объекта obj
obj.func(); // Выводит: Привет (метод "видит" переменную)
trace(obj.a); // Выводит: 1 (свойство существует)
З.Ы. to Nirth :: это была не конструктивная критика =(
конструктивная критика стоит денег =)
присваивание переменным значения осуществаляеть через "=" , исключение - внутри обжекта.
иди читай книгу до конца =) а лучше сначала прочесть документацию.
потом возвращайся на форум
4thDimention
24.11.2005, 16:11
ок, пасибо за "помощь"
так, для справки :: я и пытался создать объект...
Может кто-нибудь посоветует нормально что мне делать? как можно 30 мувикам присвоить onRelease... кроме цикла перебирающего массив...
St. Father
24.11.2005, 16:58
можно засунуть их в класс... прочитай там про Object.registerClass
4thDimention
29.11.2005, 16:00
пасибо! уже что-то... получился такой класс::
class ClassShop extends MovieClip
{
var lib_name:String = "";
var lib_name_tmp:String = "";
var is_true:Boolean = false;
var type_clothe:Number = 0;
public function ClassShop()
{
var _alpha:Number = 90;
}
public function startDrag(tr:Boolean,sdleft:Number,sdtop:Number,sdright:Number,sdbot:Number)
{
this.startDrag = startDrag();
}
public function onRelease()
{
/*this._visible = false;
Mouse.hide();*/
}
public function onRollOver()
{
this._alpha = 100;
}
public function onRollOut()
{
this._alpha = 90;
}
public function onPress()
{
this._visible = false;
Mouse.hide();
lib_name_tmp = lib_name+"_tmp";
_root.attachMovie(lib_name, lib_name_tmp, _root.getNextHighestDepth());
lib_name_tmp.startDrag(false, 0, 0, 800, 600);
}
}
но при компиляции выдает ::Wrong number of parameters; startDrag requires between 1 and 6.
this.startDrag = startDrag();
а без определения startDrag :: There is no method with the name 'startDrag'.
lib_name_tmp.startDrag(false, 0, 0, 800, 600);
в чем косяк???
a nafiga ti его переписал?
немного совсем не то ты сделал %))
ты эти функции не трогай без дела
class ClassShop extends MovieClip
{
var lib_name:String = "";
var lib_name_tmp:String = "";
var is_true:Boolean = false;
var type_clothe:Number = 0;
public function ClassShop()
{
var _alpha:Number = 90;
setHandlers();
}
function setHandlers(){
this.onPress = function() //!!!!!!!!
{
this._visible = false;
Mouse.hide();
lib_name_tmp = lib_name+"_tmp";
_root.attachMovie(lib_name, lib_name_tmp, _root.getNextHighestDepth());
lib_name_tmp.startDrag(false, 0, 0, 800, 600);
}}
}
ну и остальное в помже духе
4thDimention
30.11.2005, 12:11
сделал как ты советовол , получается что из 30 мувиков всего один реагирует правильно (как задано в классе)...
класс линкуется с мувиком посредством
for (i=0; i<=30; i++)
{
clothe_up_up[i].__proto__ = ClassShop.prototype;
clothe_up_up[i].constructor = ClassShop;
clothe_up_up[i].constructor.apply(dress);
}
// код нашел на форуме же.. если кто-нить объяснит что он значит, буду благодарен.. а то с прототипами не дружу...
т.е. в массиве перечислены все мувики...
када делал через pivate function то все мувики вели себя нормально... хз в чем дело...
А ручками написать нельзя без вот этих кодов ? заходишь в библиотеку, выбираешь свой мувик - свойства - адвансед - и там есть поле для ввода соответствующего класса ввел, и забыл про все печали и все правильно реагирует
... хз в чем дело...
на это Nirht дал хороший ответ !!!
иди читай книгу до конца =) а лучше сначала прочесть документацию.
потом возвращайся на форум
правда он всех туда посылает %)))
а что мне еще делать? переписать ему книгу в форум? это противозаконно, написать свою? будет лет десять ответа ждать, я не смогу объяснить ему основ быстро и кратко.
Да так их так!!! пусть читают и ошибаються !!!%)) только в ошибках рождаеться истина !!!
4thDimention
30.11.2005, 14:51
:D если бы вы знали, скока я книг скачал... но тока все времени нету.. на английском "с ходу" я плохо читаю.. а времени нету... единственная на русском уже упомянута выше... но про это там оч сжато написано.. а опыта ООП у мя нету... раньше слово class для меня ваще ругательным было... :cool:
книг по ооп на русском много, если интересует ооп, то найти не трудно.
:D если бы вы знали, скока я книг скачал... но тока все времени нету.. на английском "с ходу" я плохо читаю.. а времени нету... единственная на русском уже упомянута выше... но про это там оч сжато написано.. а опыта ООП у мя нету... раньше слово class для меня ваще ругательным было... :cool:
я в таких случаях еду на книжный рынок/магазин и покупаю книгу на русском языке, большинство из книг толково описывают азы ну а ХОРОШО(!!!) поняв/выучив/испытав азы, начинаю доставать умных ;) людей на форуме
4thDimention
30.11.2005, 15:33
уже взял у друга "Философия Java".. как я понял AS в последнее время стремительно приближается к Java, как по синтаксису, так и в области ООП..
4thDimention
01.12.2005, 03:02
А вообще хотел сказать пасибо!!! Уже после первого поста на форуме стал искать альтернативные пути... и лазить в мануал... так что мож с прошествием времени меня кто-нить будет доставать на форумах... ;)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.