Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Action script 2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=49)
-   -   КЛАССЫ КЛАССЫ КЛАССЫ КЛАССЫ КЛАССЫ (http://www.flasher.ru/forum/showthread.php?t=53202)

ultraflasher 28.12.2003 17:26

КЛАССЫ КЛАССЫ КЛАССЫ КЛАССЫ КЛАССЫ
 
Вложений: 1
Посмотрите класс PhysicalEngine.
Как мне в нём задействовать класс Vector3d ????
IMPORT не работает, или я его не могу заставить работать.



Попутно ещё один вопрос. Как в классах реализовать то
же самое, что и MovieClip.prototype. Extends скажете вы?
Но я не въехал. К примеру создадим класс

class circle extends MovieClip

Этот класс будет рисовать круг в MovieClip'e.
Как я не пытался это сделать, работать он не хочет.
Т.е. к примеру класс я создал, через extends MovieClip.
Далее создаю пустой клип
createEmptyMovieClip("ball", 1);
Пишу:
ball.circle(0, 0, 100);
И никакого результата.

Приведите простенький пример, если можно, рисования в MovieClip'e через класс.

p.s. Перевожу сейчас всю свою математическую библиотеку на AS 2.0 вот и мучаюсь...

ultraflasher 28.12.2003 19:37

ну что? ни у кого соображений нет? А?

llllllllll 28.12.2003 22:18

Слушай, зачем тебе все переводить на AS2, если ты ничерта в этом не понимаешь? - совет один сначала прочесть мануал :)

А вообще, к примеру class myClass extends MovieClip ... присабачивается в виде *.as к линкованому мувику в библиотеке :)

_1_Maxim 28.12.2003 22:54

Можно не создавать пустышку, а сразу ассоциировать класс с мувиком:
Создать мувик в библиотеке. У него в Lincage укажи имя класса.
Там есть специальное поле.

Или в декларации класса указать переменную типа
var boll: MovieClip;

А затем инициализировать её в конструкторе или где хочеш.

boll=createEmptyMovieClip("ball", 1);


Попробуй! У меня получается.

ultraflasher 29.12.2003 11:03

Цитата:

Оригинал написал(а) llllllllll
Слушай, зачем тебе все переводить на AS2, если ты ничерта в этом не понимаешь? - совет один сначала прочесть мануал :)

А вообще, к примеру class myClass extends MovieClip ... присабачивается в виде *.as к линкованому мувику в библиотеке :)

Ой да тов. Забор, омазались да и ладно. Сами то поняли что сказали? Как показывать, что такое массив, так тут все горазды, а как такой вопросик, так вот вам, глупый ответ, "ЧЕЕЕЕЕРЕЕЕЕЕЗ БИИИИБЛИИИОТЕКУ". Нахера мне библиотека сдалась. Я что? каждый шарик буду подключать к классу (или наоборот)? Это ГЕМОРОЙ.

Ты сам то ответ знаешь?

Кстати, что там понимать то? Это макромедиа опять кашу наварила, вот и расхлёбываем. Нет бы взяла, да C++ сделала, ан нет, какой то свой гемороидальный язык выделыывает, извращается.

Ну как я понял, здесь вообще могут отвечать только на вопросы типа:

"Что такое прототип, что такое массив" а про новое ни кто не знает.

ultraflasher 29.12.2003 11:06

Цитата:

Оригинал написал(а) llllllllll
Слушай, зачем тебе все переводить на AS2, если ты ничерта в этом не понимаешь? - совет один сначала прочесть мануал :)

А вообще, к примеру class myClass extends MovieClip ... присабачивается в виде *.as к линкованому мувику в библиотеке :)

Какой ещё МАНУАЛ? Help к ФЛЕШУ? Или на Mozilla ссылку дашь? Да, меня несказанно порадовал мануал на мозилле, ничего общего с языком flash не имеет. А ХЕЛП и подавно.

ultraflasher 29.12.2003 11:09

Цитата:

Оригинал написал(а) llllllllll
А вообще, к примеру class myClass extends MovieClip ... присабачивается в виде *.as к линкованому мувику в библиотеке :)
Это само сабой, тока мне этот геморой не нужен. Я же динамически мувики плодить буду.

iLoveYou 29.12.2003 14:58

эээ, верните экспонат в кунсткамеру :D

Цитата:

Слушай, зачем тебе все переводить на AS2, если ты ничерта в этом не понимаешь?
по-моему, ответ очевиден: начали снижаться показатели продажи гуталина

Baltika 29.12.2003 15:47

WOW, не иначе как лектор вернулся :))

llllllllll 29.12.2003 16:05

nuran :), начнем с import'a так как он нам понадобиться ;) - тут друг мой опять тебя в хелп (в котором поиск есть) отправлю за техническими подробностями дабы оно работало, ну и плюс в данном разделе уже писали что-то про баги с импортом.

Если хош делать с createEmptyMovieClip - делай, тогда тебе нужна ссылка в пределах класса на этот клип.
Правда я не уверен, что такой подход очень удобен, если б ты немного разобрался с Диром, то ситуация была бы понятна - какой это геморой (куча парент скриптов и т д).

Но для мазахистов пожалуйста: (иногда стоит заглядывать на ММ, а не ползать по блогам, если ты так интересуешься флешом ;)) http://macromedia.com/devnet/mx/flas...d_classes.html

Что касается линкованых мувиков из библиотеки, которые вобщем то можно оформить в виде компонентов - помоем это более разумное решение, атачить (если не нравиться attachMovie - сделай свой интерфейс вроде UIObject.createClass ...) компиленый символ, пускай даже пустышку и далее на прямую юзать API присобаченного к нему класса, хотя ..

Цитата:

Это само сабой, тока мне этот геморой не нужен. Я же динамически мувики плодить буду.
Ну и на худой конец, можно посмотреть, как решили задачу "твоей" мат. библиотеки другие и просто с3.14дить :)
http://members.shaw.ca/flashprogramm...wis/index.html (третий раз тебе кидаю эту линку :))

p.s.: Большего не скажу, так как неизвестно на сколько долго сижу на P1 :), об MX2004 и думать не приходиться :)

ultraflasher 01.01.2004 08:56

Цитата:

Оригинал написал(а) Sergey"iLoveYou"
эээ, верните экспонат в кунсткамеру :D


по-моему, ответ очевиден: начали снижаться показатели продажи гуталина

Ой де тов. Sergey+Shtrek=Love не смяшите меня. Движок уже давно работает и в 7 флеше (если без классов :) ).

ultraflasher 01.01.2004 08:57

Цитата:

Оригинал написал(а) Baltika
WOW, не иначе как лектор вернулся :))
Слышь, Нижний Новгород, молчи лучше :D

ultraflasher 01.01.2004 09:09

Цитата:

Оригинал написал(а) llllllllll
[b]Но для мазахистов пожалуйста: (иногда стоит заглядывать на ММ, а не ползать по блогам, если ты так интересуешься флешом ;)) http://macromedia.com/devnet/mx/flas...d_classes.html

Читали очень давно, отстой ещё тот ...

Кстати, давно ли вы тов. Забор, были на этой библиотеке Брендона Вильямса? Она уже наверное месяца 2 как не пашет. Флешка мигает и ничего не показывает.

ultraflasher 01.01.2004 09:13

Цитата:

Оригинал написал(а) llllllllll
Ну и на худой конец, можно посмотреть, как решили задачу "твоей" мат. библиотеки другие и просто с3.14дить :)
http://members.shaw.ca/flashprogramm...wis/index.html (третий раз тебе кидаю эту линку :))

Никак не получится, у него у самого в flash 7 по 3d нет ничего. Есть только отдельные классы математические и всё. Я уже давно читал там у него прямо и написано было: большинство 3d классов неготово.

nuran 01.01.2004 09:58

Всё вашу м...! вопрос похоже придётся решить так: передачей классу имени MovieClip'a. А класс уже будет рисовать. Но это отстойно. Я бы хотел конечно что то типа

MovieClip.circle();

Надо попробовать предложение от _1_Maxim. Извини, всё времени не было.

iLoveYou 01.01.2004 15:48

Тов. Нюра N,
желаю Вам удачи в Вашем нелегком деле, потому что трудностей Вы встретите очень-очень много. :)

llllllllll 02.01.2004 03:49

nuran, у Ahab'a все работает, заходил за пару дней до нового года, когда тебе линку кидал - библиотека постоянно пополняется и там все есть, конкретно 3D или еще, что-то я не смотрел ... к тому же я тебе советовал посмотреть как люди пишут, для этого не нужен конкретный класс =), можно заглянуть сюда http://www.bit-101.com/Particles/

p.s.: А вообще, лично мне по барабану как написано, главное, чтоб я понимал и оно работало ;)

De Notr Damus 02.01.2004 04:56

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

ultrashock.com > tutorials > mx2004 > as2.0

nuran 02.01.2004 15:27

2 Sergey

Жену свою учи ... щи варить. Трудности? От тебя что ли?

Цитата:

Оригинал написал(а) De Notr Damus
а вообще, на ультрашoке очень доступно об етом изложено.

ultrashock.com > tutorials > mx2004 > as2.0

Дада, это у меня тоже всё скачено. Только ещё не читал. Спасибо, что напомнил.

Прошу прощения, вопрос о импортировании классов снимается.
Оказывается не я глупый и непонимающий, а как обычно флеш тупит.
Ошибки в самом flash. Тупой редактор выдаёт сообщение, что класс не может быть
загружен в другой класс. Вот я и думал, что это ошибка. На самом деле нужно
забить на эти сообщения. Это не баг, это фича глупого редактора flash'a ...

И вопрос о прямом рисовании через classes тоже снимается. Это невозможно.
Запомните это, и забудьте навсегда.

А Сергею даю негативную оценку[-] :D. Что-то он с Балтикой сдружился :)) Не к добру это ...
Балтику оставлю в раздумии над своим прошлым поведением. Блог про лектора начался как раз из за него.
И из за него же + lexass'a, который как я понял сообщил куда надо, мне Виталий задарил бан.

Кстати, this ГЛЮЧЕНЫЙ. Я бы мог это доказать, это точно, в прототипах.
Так как, когда я делал свои сырцы в 3d через прототипы я как раз обнаружил это, по этому
во всех моих старых исходниках написано eval, вместо this. Помню мой первый топ на этом форуме,
назывался он вроде Actionscript.txt. И там один умный дядя как раз меня упрекнул в том, что
я использую eval. Только хуже ли это, чем this? Я ничего не могу утверждать, у меня нет
ни какой информации о том, что eval работает медленнее this. Нет у меня оснований, что бы утверждать это.

Цитата:

********************************************************************************
Забору как всегда огромное пасибо, ну что тут говорить, всегда мне помогаешь...
Не забуду, если что нужно, всегда расчитывай на меня.
Прошу товарища IIIIIIIIII написать мне или в личку, или сюда твоё Имя настоящее.
Мне уже неудобно тебя забором называть.
********************************************************************************
ПРИМЕР РИСОВАНИЯ ЧЕРЕЗ CLASSES C ПЕРЕДАЧЕЙ ИМЕНИ MovieClip'a | стрёмно это всё 8=(

<c> 2003 Grigory Ryabov. All Rights Reserved.

Код:

// ФАЙЛ nuranORG/draw/CurveThreeTo.as
class nuranORG.draw.CurveThreeTo extends MovieClip {
        private var cx, cy:Number = 0;
        function CurveThreeTo(__mc:MovieClip, __x0:Number, __y0:Number, __x1:Number, __y1:Number, __x2:Number, __y2:Number) {
                cx = 2*__x1-0.5*(__x0+__x2);
                cy = 2*__y1-0.5*(__y0+__y2);
                __mc.curveTo(cx, cy, __x2, __y2);
        }
}

Код:

// ФАЙЛ nuranORG/draw/Circle.as
import nuranORG.draw.CurveThreeTo;

class nuranORG.draw.Circle extends MovieClip {
        static var step:Number = 16;
        static var angle:Number = 360/step;
        static var rad:Number = Math.PI/180;
        private var i:Number = 0;
        private var mas:Array = new Array(step);
        function Circle(__mc:MovieClip, __x:Number, __y:Number, __r:Number) {
                for (i=0; i<=step; i++) {
                        mas[i] = new Object();
                        mas[i].x = Math.cos(angle*rad*i)*__r+__x;
                        mas[i].y = Math.sin(angle*rad*i)*__r+__y;
                }
                __mc.moveTo(mas[0].x, mas[0].y);
                for (i=0; i<step; i += 2) {
                        new CurveThreeTo(__mc, mas[i].x, mas[i].y, mas[i+1].x, mas[i+1].y, mas[i+2].x, mas[i+2].y);
                }
        }
}

// -- ИСПОЛЬЗОВАНИЕ

Код:

import nuranORG.draw.*;
var ball:MovieClip = createEmptyMovieClip("0_mc", 0);
ball.beginFill(0xFFFFFF, 100);
new Circle(ball, 0, 0, 100);
ball.endFill();

Хочу тебе сказать, Забор, что у Брендона Вильямса, на которого ты мне даёшь ссылки, все 3d функции списаны с OpenGL.
И он этого не скрывает, да они все одинаковы. Всё 3d уже давно придумано, и не надо изобретать
велосипед, что бы сделать 3d движок.

nuran 02.01.2004 16:01

Если интересно, забор, зацени что я накалякал здесь:
http://www.flash.plux.ru/board/viewtopic.php?t=140
Кстати на макромедию я тоже с Bit-101 попал, вот отсюда :D :
http://www.bit-101.com/forum/viewtopic.php?t=2602

iLoveYou 02.01.2004 20:50

Цитата:

Оригинал написал(а) nuran
2 Sergey
Жену свою учи ... щи варить. Трудности? От тебя что ли?

разве я пытался тебя чему-то учить? дорогой друг, я давно уже забил на тебя и твои несчастные поделки -- ты критики не воспринимаешь в принципе, ошибок не можешь признать -- только огрызаешься.
а трудности у тебя будут из-за собственного хамства, упертости и самолюбия, которые в сочетании безграмотностью создают удивительный коктейль.
Цитата:

А Сергею даю негативную оценку[-] . Что-то он с Балтикой сдружился ) Не к добру это ...
Балтику оставлю в раздумии над своим прошлым поведением. Блог про лектора начался как раз из за него.
И из за него же + lexass'a, который как я понял сообщил куда надо, мне Виталий задарил бан.
:D
Цитата:

Кстати, this ГЛЮЧЕНЫЙ. Я бы мог это доказать, это точно, в прототипах.
проблема: тебя кто-нибудь будет слушать?




llllllllll
респект. за толерантность. :)

llllllllll 03.01.2004 03:47

Цитата:

... И он этого не скрывает, да они все одинаковы. Всё 3d уже давно придумано, и не надо изобретать велосипед, что бы сделать 3d движок.
1) Ты прозрел :) Перечитай, то что я тебе писал на счет твоих первых движков и далее :)

2) Если ты хочешь просто рисовать круги, зачем все так усложнять, что это тебе дает? почему бы не юзать прототипы? :), ведь классы в АС2 - всеголишь конструкции для удобства, ну или (не уверен, у меня нет возможности проверить) можно зафигачить в MovieClip.as в папачке classes все что тебе нада - хотя это не правильно:) Вобщем не нада усложнять ;)

nuran 05.01.2004 10:53

Заборчик, я просто хочу перевести всю свою мат. библиотеку на классы.

Baltika 05.01.2004 11:35

Цитата:

Оригинал написал(а) nuran

Балтику оставлю в раздумии над своим прошлым поведением. Блог про лектора начался как раз из за него.
И из за него же + lexass'a, который как я понял сообщил куда надо, мне Виталий задарил бан.

все та же пурга .. похоже, случай клинический ..

:D

Boldin 14.01.2004 10:58

Nuran'у
 
Насчет глючности eval в MX: http://www.macromedia.com/support/fl...nment_area.htm

nuran 14.01.2004 14:35

Re: Nuran'у
 
Цитата:

Оригинал написал(а) Boldin
Насчет глючности eval в MX: http://www.macromedia.com/support/fl...nment_area.htm
:D :D :D :D :D приколол так приколол

llllllllll 15.01.2004 13:57

Кстати, nuran, я насчет твоих "классов" с весьма странным использованием ;) - AS - прото язык - наследование на базе прототипов ... к сожалению нету возможности поставить MX2004, так что объясню - нечто вроде Object.registerClass :)

Код:

function Class(){
}
Class.createClassMovieClip = function(name,depth){
        var ref = createEmptyMovieClip(name,depth);
        ref.__proto__ = this.prototype;
        return ref;
}
Class.prototype = new MovieClip();
Class.prototype.test = function(){
        trace("hello world!");
}

ref = Class.createClassMovieClip("mc",2);
ref.test();
trace(ref.getDepth());

:)

Код:

new Circle(ball, 0, 0, 100);
А это ужас какойто :)

nuran 16.01.2004 07:43

растолкуй пожалуйста, что ты тут набодяжил. У меня Flash'a под рукой нет.

Boldin 16.01.2004 11:37

Ничего интересного Hello World средствами ООП :)
замутил класс и от него объект с методом хело ворлд!

llllllllll 16.01.2004 14:29

Цитата:

Оригинал написал(а) nuran
растолкуй пожалуйста, что ты тут набодяжил. У меня Flash'a под рукой нет.
То, что я написал лишь смысл, юзать в прямую не нада, но ...

Ты вот это зачем пишешь, где юзаешь то что выделено болдом? :)

class nuranORG.draw.Circle extends MovieClip

(Кстати extends делает все то же __proto__ :))

И плюс простейший метод для MC зачемто оформляется как класс, который сразу же уничтожается после вызова :)

nuran 18.01.2004 14:00

В смысле зачем? Это .. по спецификациии, что бы работать с MovieClip'ом через класс. Или я что-то не понял?

llllllllll 18.01.2004 19:16

class MyClass extends MovieClip

Делает то же самое, что и ...

myClass.prototype = new MovieClip() - для MX


От того, что ты уберешь строчку extends в твоем случае ничего не измениться :)

nuran 19.01.2004 10:44

Что значит не изменится. Зубр, ты что, Дебруила перечитался :D , оно работать не будет, если не писать extends MovieClip. Вот я о чём. Ошибку выдаст. Прототипы здесь не при чём, ето ж классы во внешних файлах... хотя ...

Boldin 19.01.2004 13:42

Забор ты бы всетаки поставил себе MX

Boldin 19.01.2004 14:37

Забор ты бы всетаки поставил себе MX

llllllllll 20.01.2004 03:39

Короче :)

Вот то что ты по сути делаешь:

Код:

// SuperLineTo.as

class SuperLineTo extends LoadVars // -> От чего угодно, к примеру Array, или Object :)
{
        function SuperLineTo(__mc:MovieClip, __x:Number, __y:Number){
                __mc.lineTo(__x,__y);
        }
}

и потом ...

Код:

import SuperLineTo;

var ball:MovieClip = createEmptyMovieClip("mc", 0);
ball.lineStyle(1);
new SuperLineTo(ball, 100, 100); // Твой никому не нужный экземпляр класса уничтожается сразу же после вызова конструктора, так как нет никакой ссылки, куда его сохранять :)

:D

nuran 20.01.2004 11:52

Ну и? Я его и не хочу сохранить. Мне веть нужно только нарисовать что-то. Может что-нибудь умнее предложишь? У меня голова пока что на большее не способна! ;)

llllllllll 21.01.2004 03:18

Неееее :), я пас далее объяснять и предлагать :D

УильямБрэдберри 23.01.2004 12:54

Цитата:

Оригинал написал(а) llllllllll
Неееее :), я пас далее объяснять и предлагать :D
:D

да. непробиваемо.

Нуран, жаль, что подпись Мегафлэшер уже Джоном занята, а то тебе бы смотрелось :D :D :D

_1_Maxim 23.01.2004 23:19

Цитата:

Оригинал написал(а) llllllllll
class MyClass extends MovieClip

Делает то же самое, что и ...

myClass.prototype = new MovieClip() - для MX


От того, что ты уберешь строчку extends в твоем случае ничего не измениться :)

Не совсем. Наследования здесь нет. Здесь, скорее, расширение объекта MovieClip (extends).
Ведь создаешь ты сначала мувик(attachMovie), а не объект. А уже в нём конструируешь объект. Кто кого наследует...?
Кстати , если конструктор по умолчанию, то класс (подкласс мувика) создаётся автомотически.

Держись, nuran!

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


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

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