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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 20.10.2010, 12:05
Dr_Bra вне форума Посмотреть профиль Отправить личное сообщение для Dr_Bra Посетить домашнюю страницу Dr_Bra Найти все сообщения от Dr_Bra
  № 1  
Ответить с цитированием
Dr_Bra
 
Аватар для Dr_Bra

Регистрация: Nov 2008
Адрес: Moscow
Сообщений: 493
Отправить сообщение для Dr_Bra с помощью ICQ
По умолчанию public static function

Всем привет!

у меня есть метод :
Код AS3:
public static function allRight():void
		{
			if(num == 3)
			{
				trace("All right")
				//gotoAndPlay("finish");
			}
		}
почему gotoAndPlay("finish"); не может сработать?
Изображения
 

Старый 20.10.2010, 12:09
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 2  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Потому что это статический метод класса, а у класса MovieClip, как объекта, нет метода gotoAndPlay(). Этот метод есть у объектов, инстанцированных от класса MovieClip.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

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

Регистрация: Nov 2007
Адрес: Moscow
Сообщений: 566
Можно, например, передать в функцию allRight ссылку на мувиклип, у которого надо вызвать gotoAndPlay, тогда все будет хорошо.
__________________
#flasher@irc.trg.ru:6667

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

Регистрация: Nov 2008
Адрес: Moscow
Сообщений: 493
Отправить сообщение для Dr_Bra с помощью ICQ
а если нужно перескочить на на главном таймлайне?

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

Регистрация: Nov 2007
Адрес: Moscow
Сообщений: 566
Главный таймлайн тоже мувиклип.
__________________
#flasher@irc.trg.ru:6667

Старый 20.10.2010, 12:23
Dr_Bra вне форума Посмотреть профиль Отправить личное сообщение для Dr_Bra Посетить домашнюю страницу Dr_Bra Найти все сообщения от Dr_Bra
  № 6  
Ответить с цитированием
Dr_Bra
 
Аватар для Dr_Bra

Регистрация: Nov 2008
Адрес: Moscow
Сообщений: 493
Отправить сообщение для Dr_Bra с помощью ICQ
подскажи, полиз, как к нему обратиться в моем случае..

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

Регистрация: Nov 2007
Адрес: Moscow
Сообщений: 566
Код AS3:
(root as MovieClip)
__________________
#flasher@irc.trg.ru:6667

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

Регистрация: Nov 2008
Адрес: Moscow
Сообщений: 493
Отправить сообщение для Dr_Bra с помощью ICQ
спасибо

Добавлено через 2 часа 53 минуты
во всем приложении что бы обратиться к методу или свойству использовал такой вид
Код AS3:
public static var num:String
и из другого класса обращался к нему
Код AS3:
Название Класса.num = значение
но в моем случае мне посоветовали избегать static
пришлось все менять и теперь не так просто обрфщаться к свойствам главного класса из дополнительных

Добавлено через 2 часа 57 минут
вот, например, есть класс Friend, в нем описывается функционал людей, на сцене будет 3 экземпляров этого класса.

в классе Friend есть метод:
Код AS3:
this.addEventListener(MouseEvent.ROLL_OVER, over, false, 0, true);
Добавлено через 3 часа 5 минут
наводим курсор на экземпляр класса Friend и этот экземпляр должен отработать такой вот функционал:
Код AS3:
private function over(e:MouseEvent):void
		{
			if((this.root as Main)['take'] == true)//здесь take свойство главного класса, которое верно.
			{				
				myTween = new Tween(this, "y", Strong.easeOut, _y, _y-45, 5, false);
				myTween.addEventListener(TweenEvent.MOTION_FINISH, tweenFinishd, false, 0, true);
				this.gotoAndStop(2);//наш "друг" прыгает и меняет кадр на второй
 
				if((this.root as Main)["cursor"].hitTestObject(this))//условие верно
				{	
 
					//  условие для 1-го кусочка
					if((this.root as Main)['currentDragged'] == "f1_mc")//верно 
					{	
						piple = this.name;
						trace(piple)// выводит p1_mc
						(this.root as Main)["f1"].alpha = 0;// на эторугается! Почему? 
 
						if(piple == "p1_mc")
						{
							trace((Main)['currentDragged'])
 
							(this.root as Main)["s1"].alpha = 1;
							(this.root as Main)["s1"].gotoAndPlay(2);
							(this.root as Main)["p1"].stopFriend();
 
							(this.root as Main)["num"] ++;
							(this.root as Main).allRight();
						}
Добавлено через 3 часа 8 минут
Код AS3:
(this.root as Main)["f1"].alpha = 0;
это конечно не выполняется, все что ниже то же не выполняется.
а ругается так:
Код AS3:
TypeError: Error #1006: value is not a function.
	at com::Friend/over()[/Volumes/work/Projects/KFC/KFC-202477/banner_800x250/com/Friend.as:48]


Последний раз редактировалось Dr_Bra; 20.10.2010 в 17:14.
Старый 20.10.2010, 21:29
Obi вне форума Посмотреть профиль Отправить личное сообщение для Obi Найти все сообщения от Obi
  № 9  
Ответить с цитированием
Obi
 
Аватар для Obi

Регистрация: Nov 2007
Адрес: Moscow
Сообщений: 566
Цитата:
пришлось все менять и теперь не так просто обрфщаться к свойствам главного класса из дополнительных
Фишка в том, что не нужно обрааться к свойствам главного класса из дополнительных. Собственно статики потому и нужно стараться избегать, чтобы уменьшать свяанность между объектами. Каждый про каждого должен знать только необходимый минимум.

Ну и преведение типов нужно для того, чтобы компилятор не ругался на обращение к несуществующему свойству, считая объект не тем, кем он есть
(this.root as Main)['currentDragged'] – надо было писать так: (this.root as Main).currentDragged

А на обращение ['someField'] компилятор так и так не ругнется, так что можно (НЕЛЬЗЯ!) писать this.root['someField']
__________________
#flasher@irc.trg.ru:6667


Последний раз редактировалось Obi; 20.10.2010 в 21:33.
Старый 21.10.2010, 12:00
Dr_Bra вне форума Посмотреть профиль Отправить личное сообщение для Dr_Bra Посетить домашнюю страницу Dr_Bra Найти все сообщения от Dr_Bra
  № 10  
Ответить с цитированием
Dr_Bra
 
Аватар для Dr_Bra

Регистрация: Nov 2008
Адрес: Moscow
Сообщений: 493
Отправить сообщение для Dr_Bra с помощью ICQ
почитал у Мука про статические методы и свойства, да действительно в моем случае их применять не стоит.
Поправил код, учитывая комментарий, но по прежнему та же самая ругань

Код AS3:
package com
{
	import com.Food;
	import com.Main;
 
	import fl.transitions.Tween;
	import fl.transitions.TweenEvent;
	import fl.transitions.easing.*;
 
	import flash.display.MovieClip;
	import flash.events.Event;
	import flash.events.MouseEvent;
 
	public class Friend extends MovieClip
	{
		private var _y:int;
		private var myTween:Tween;
		public var piple:String;
 
		public function Friend()
		{
			this.addEventListener(Event.ADDED_TO_STAGE, init);
		}
 
		private function init (e:Event):void
		{	
			_y = this.y;
			this.addEventListener(MouseEvent.ROLL_OVER, over, false, 0, true);			
		}
 
		private function over(e:MouseEvent):void
		{
			if((this.root as Main).take == true)
			{				
				myTween = new Tween(this, "y", Strong.easeOut, _y, _y-70, 5, false);
				myTween.addEventListener(TweenEvent.MOTION_FINISH, tweenFinishd, false, 0, true);
				this.gotoAndStop(2);
 
				if((this.root as Main).cursor.hitTestObject(this))
				{	
 
					//  условие для 1-го кусочка
					if((this.root as Main).currentDragged == "f1_mc")
					{	
						piple = this.name;
						(this.root as Main).f1.alpha = 0;
 
						if(piple == "p1_mc")
						{
							trace((this.root as Main).currentDragged)//почему - то выводит сразу 2 одинаковых имени ("f1_mc" - этот объект был наведен на экземпляр Friend) 
							(this.root as Main).s1.alpha = 1;// ругается на эту строку
//							(this.root as Main).s1.gotoAndPlay(2);
//							(this.root as Main).p1.stopFriend();
//							
//							(this.root as Main).num ++;
//							trace((this.root as Main).num)
//							//(this.root as Main).allRight();
						}
					}
 
				}
 
			}
 
		}
 
		private function tweenFinishd(e:TweenEvent):void
		{
			myTween = new Tween(this, "y", Strong.easeIn, this.y, _y, 5, false);
			myTween.addEventListener(TweenEvent.MOTION_FINISH, shutUp, false, 0, true);
		}
 
		private function shutUp(e:TweenEvent):void
		{
			this.gotoAndStop(1);
		}
 
		public function stopFriend():void
		{			
			this.removeEventListener(MouseEvent.ROLL_OVER, over);
		}
	}
}

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

Теги
function , public , static

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

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


 


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


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