![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Jan 2009
Адрес: Петерсбург
Сообщений: 1,882
|
|
|
|||||
|
Регистрация: Sep 2004
Сообщений: 90
|
джонатан, покажи целиком код PersonagesRepository, похоже у тебя main, как статик объявлен. И подозреваю, что (mainLink as Main).showProfile(); должно прокатить.
Кстати, в конструктор принимай сразу mainLink:Main и не приводи классы. |
|
|||||
|
Bgg: та же ошибка.
Vier: package com.russianRoulette { import flash.display.MovieClip; import flash.events.Event; import com.flashgangsta.managers.ButtonManager; import fl.text.TLFTextField; import flash.net.URLLoader; import flash.display.Sprite; import flash.display.Loader; import flash.net.URLRequest; import caurina.transitions.Tweener; import flash.system.LoaderContext; import flash.system.ApplicationDomain; import flash.system.SecurityDomain; import flash.display.DisplayObject; import flash.events.ProgressEvent; import com.russianRoulette.Communicator; public class PersonagesRepository extends MovieClip { public static const SECTION_SHOP:String = "shop"; public static const SECTION_REPOSITORY:String = "repository"; public static const PERSONAGE_MOTION_FRAMES:int = 15; public static const PERSONAGE_TRANSITION:String = "easeInOutCubic"; private var main:Main; private var currentPersonage:Number = 0; private var currentSection:String; private var currentId:String; private var showcase:MovieClip; private var nameLable:TLFTextField; private var costLable:TLFTextField; private var button:MovieClip; private var prevButton:MovieClip; private var nextButton:MovieClip; private var personage:Sprite; private var firstView:Boolean = true; private var personageLoader:Loader = new Loader(); private var title:TLFTextField; private var personageGoOutNext:Object; private var personageGoOutPrev:Object; private var personageGoIn:Object; private var confirmation:Confirmation; private var blockRect:BlockRect; private var messageWindow:Message; private var buyingSuccess:Boolean; private static var personagesData:XML; public function PersonagesRepository( mainLink:Main, section:String, data:XML ) { this.addEventListener( Event.ADDED_TO_STAGE, init ); main = mainLink; currentSection = section; personagesData = data; } private function init( event:Event ):void { trace( "PersonagesRepository init" ); this.removeEventListener( Event.ADDED_TO_STAGE, init ); this.addEventListener( Event.REMOVED_FROM_STAGE, removed ); gotoAndStop( currentSection ); currentPersonage = 0; prevButton = prev_mc; nextButton = next_mc; showcase = showcase_mc; nameLable = showcase.name_txt; button = showcase.button_mc; title = title_txt; if( showcase.cost_txt ) costLable = showcase.cost_txt; personageGoOutNext = {x: -( stage.stageWidth / 2 ), useFrames: true, time: PersonagesRepository.PERSONAGE_MOTION_FRAMES, transition: PersonagesRepository.PERSONAGE_TRANSITION, onComplete: function():void { this.parent.removeChild( this ) } }; personageGoOutPrev = {x: stage.stageWidth + ( stage.stageWidth / 2 ), useFrames: true, time: PersonagesRepository.PERSONAGE_MOTION_FRAMES, transition: PersonagesRepository.PERSONAGE_TRANSITION, onComplete: function():void { this.parent.removeChild( this ) } }; personageGoIn = {x: Math.round( stage.stageWidth / 2 ), useFrames: true, time: PersonagesRepository.PERSONAGE_MOTION_FRAMES, transition: PersonagesRepository.PERSONAGE_TRANSITION }; ButtonManager.addButton( prevButton, showPrevPersonage ); ButtonManager.addButton( nextButton, showNextPersonage ); ButtonManager.addButton( button, buttonClicked ); ButtonManager.setButtonEnable( prevButton, false, true ); showPersonage(); } public function removed( event:Event ):void { trace( "PersonagesRepository removed" ); this.removeEventListener( Event.REMOVED_FROM_STAGE, removed ); ButtonManager.removeButton( prevButton ); ButtonManager.removeButton( nextButton ); ButtonManager.removeButton( button ); ButtonManager.removeButton( prevButton ); } private function setLable( name:String, cost:String, id:String ):void { nameLable.text = name; if( costLable ) costLable.text = "Стоимость: " + cost + " серебряных кредитов"; } private function showPersonage():void { var personageNode:XML = PersonagesRepository.personagesData.personage[ currentPersonage ]; setLable( personageNode.@name, personageNode.@cost, personageNode.@id ); loadPersonage(); } private function loadPersonage():void { if( personageLoader.contentLoaderInfo.bytesLoaded !== personageLoader.contentLoaderInfo.bytesTotal) { personageLoader.close(); } personageLoader.contentLoaderInfo.removeEventListener( ProgressEvent.PROGRESS, personageProgress ); personageLoader.contentLoaderInfo.removeEventListener( Event.COMPLETE, personageLoaded ); var request:URLRequest = new URLRequest( PersonagesRepository.personagesData.personage[ currentPersonage ].@url ); var top:int = Math.round( title.y + title.height ); var bottom:int = showcase.y; personage = new Sprite(); if( firstView ) { personage.x = Math.round( stage.stageWidth / 2 ); firstView = false; } personage.y = top + Math.round( ( bottom - top ) / 2 ); this.addChild( personage ); personage.addChild( new PersonageRepositoryPreloader() ); var preloader:DisplayObject = personage.getChildAt( personage.numChildren - 1 ); preloader.x = -Math.round( preloader.width / 2 ); personageLoader.contentLoaderInfo.addEventListener( ProgressEvent.PROGRESS, personageProgress ); personageLoader.contentLoaderInfo.addEventListener( Event.COMPLETE, personageLoaded ); personageLoader.load( request, new LoaderContext( false, ApplicationDomain.currentDomain, SecurityDomain.currentDomain ) ); } private function personageProgress( event:ProgressEvent ):void { var preloader = personage.getChildAt( personage.numChildren - 1 ); var precent:int = Math.round( event.bytesLoaded / event.bytesTotal * 100 ); preloader.lable_txt.text = precent + "%"; } private function personageLoaded( event:Event ):void { personage.removeChild( personage.getChildAt( personage.numChildren - 1 ) ); event.target.content.x = -Math.round( event.target.content.width / 2 ); event.target.content.y = -Math.round( event.target.content.height / 2 ); personage.addChild( event.target.content ); event.target.removeEventListener( ProgressEvent.PROGRESS, personageProgress ); event.target.removeEventListener( Event.COMPLETE, personageLoaded ); } private function showPrevPersonage( target:MovieClip ):void { Tweener.addTween( personage, personageGoOutPrev ); currentPersonage--; showPersonage(); personage.x = -( stage.stageWidth / 2 ); Tweener.addTween( personage, personageGoIn ); if( currentPersonage === PersonagesRepository.personagesData.personage.length() - 2 ) { ButtonManager.setButtonEnable( nextButton, true, true ); } if( currentPersonage === 0 ) { ButtonManager.setButtonState( prevButton, ButtonManager.STATE_OUT ); ButtonManager.setButtonEnable( prevButton, false, true ); } } private function showNextPersonage( target:MovieClip ):void { Tweener.addTween( personage, personageGoOutNext ); currentPersonage++; showPersonage(); personage.x = stage.stageWidth + ( stage.stageWidth / 2 ); Tweener.addTween( personage, personageGoIn ); if( currentPersonage === 1 ) { ButtonManager.setButtonEnable( prevButton, true, true ); } if( currentPersonage === PersonagesRepository.personagesData.personage.length() - 1 ) { ButtonManager.setButtonState( nextButton, ButtonManager.STATE_OUT ); ButtonManager.setButtonEnable( nextButton, false, true ); } } private function buttonClicked( target:MovieClip ):void { var currentPersonageInfo:XML = PersonagesRepository.personagesData.personage[ currentPersonage ]; var message:String; currentId = currentPersonageInfo.@id; if( currentSection === PersonagesRepository.SECTION_SHOP ) { message = "Вы уверены что хотите купить " + currentPersonageInfo.@name + " за " + currentPersonageInfo.@cost + " серебряных кредитов?" blockRect = new BlockRect(); confirmation = new Confirmation( message, buy, abort ); main.addChild( blockRect ); main.addChild( confirmation ); } } private function buy():void { main.communicator.buyPersonage( currentId, onBuyed, VkErrors.buyPersonageError ); //Отправляем запрос на покупку персонажа confirmation.setLable( "Подождите..." ); } private function abort():void { removeConfirmation(); removeBlockRect(); } private function removeConfirmation():void { main.removeChild( confirmation ); confirmation = null; } private function removeBlockRect():void { main.removeChild( blockRect ); blockRect = null; } private function onBuyed( response:XML ):void { buyingSuccess = response.success != 0; //Запоминаем результат сделки trace( buyingSuccess ); removeConfirmation(); messageWindow = new Message( response.message, messageClose ); //Выводим окно с результатом сделки main.addChild( messageWindow ); } private function messageClose():void { main.removeChild( messageWindow ); messageWindow = null; removeBlockRect(); if( buyingSuccess ) { //Если персонаж был куплен то идём к профайлу. this.parent.removeChild( this ); main.showProfile.call(); } } } }
__________________
Убейте меня! |
|
|||||
|
Регистрация: Jun 2006
Адрес: Москва
Сообщений: 461
|
Что-то у вас все же не так... ибо вот так в чистом виде работает:
Main.as package { import flash.display.MovieClip; public class Main extends MovieClip { public function Main() { var menu:Menu = new Menu(this); } public function showProfile():void { trace("showProfile called!"); } } } Menu.as package { import flash.display.MovieClip; public class Menu extends MovieClip { private var _main:Main; public function Menu(target:Main) { _main = target; _main.showProfile(); } } } в чем работаете, чем компилите? Последний раз редактировалось Hidest; 20.10.2010 в 20:28. |
|
|||||
|
Adobe Flash Professional CS5
Сам не пойму, обычно в таких ситуациях ошибки небыло никогда. ![]()
__________________
Убейте меня! |
|
|||||
|
Регистрация: Sep 2004
Сообщений: 90
|
Покажи еще класс Main. В таком виде у меня тоже ошибки нет.
|
|
|||||
|
[+4 06.05.14]
|
public class PersonagesRepository extends MovieClip { public function PersonagesRepository( mainLink:Object ) { main = mainLink as Main; // что такое Main и где оно определено? main.showProfile(); } } понравилось.... ))) Но тут мне тоже кажется проблема в компиле. или что то не так делаете. в чистом виде вам показали все верно Добавлено через 4 минуты и вот это тоже кстати неплохо |
|
|||||
|
Я конечно в АС3 новичек, но что вызвало у вас столько радости в последних двух цитатах кода, мне не понятно? Вы не слышали что такое строгое равенство? И что забавного во второй цитате?
Main это класс fla документа, который находится в том же пакете что и PersonagesRepository. Кстати: Вам не показалось смешным?
__________________
Убейте меня! Последний раз редактировалось джонатан; 21.10.2010 в 04:13. |
|
|||||
|
Цитата:
__________________
тут я |
|
|||||
|
Регистрация: Jun 2006
Адрес: Москва
Сообщений: 461
|
Или шлите событие из своего меню, а уже в main его ловите и делайте, что нужно.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 19:05. |
|
|
« Предыдущая тема | Следующая тема » |
|
|