Without doing the entire project, I'll put up some ideas here. They are 
very likely incomplete, so be sure to think through all the possibilities. 
You may want to flowchart the concept, as well.

At 14:53 2/5/2001, Steven Frazier wrote:
>1. A movie named "picture database"
>2. a Field named  "entercastname"  where the user would enter the name of 
>the picture they paste in.

This is the member name to extract the text for naming the newly created 
member (as per Florian's reply).

>3. a Field named  "frame" which would automatically display the frame 
>number of the movie.

I would store the value in a global variable. Each time the user hits the 
New button, add 1 to the global variable and put it into this field's text 
property.

>4. a "New"  button for the user to advance to a new frame and do the whole 
>process once.

Since you probably have no idea how many frames the user will create, you 
may want to think in pseudo frames. That is, stay on one frame in the score 
even though the user doesn't know it. Just swap the members on the fly and 
increment a variable to illustrate a "frame" number.

global gFrame
on mouseUp
   gFrame = gFrame + 1
   member("frame").text = string(gFrame)
end

>5. a Button Named " paste picture " which would do the following.
>         a. paste a picture to the stage on this frame only (one frame)
>         b. create a new cast member in an external cast named "externalcast"
>         c. name that newly formed cast member with the name placed in the 
> field "entercastname" by the user to describe the picture they pasted 
> onto the stage.
>         d. When it is finished doing the above steps - it would create a 
> new blank frame - number the frame in the field "frame" and the process 
> would start all over.

I might disagree with the order of things here. Thinking as the programmer 
rather than the user, you would want to create the cast member before 
attempting to place anything on the stage. Also, if hitting " paste picture 
" automatically creates a new frame, is there any need for a "New" button? 
I would probably omit that step from the paste function, but use it if it 
makes more sense in your project.

As to how to dynamically place sprites in the score, there are a couple of 
popular methods. One involves puppeting an empty sprite channel and setting 
that sprite's member to your new member. Not officially supported by 
Macromedia but sworn to & loved by some of the members of this list. This 
will likely require manually setting the rect & other properties as well. 
Another popular method is to create a 0 pixel bitmap member named, say, 
"standIn" and place it on the stage. Then just set that sprite's member to 
your new member. I believe there are articles on the DOUG site at 
http://www.director-online.com that describe one or both methods in more 
detail.

This might be how it would look as a behavior on the " paste picture " 
button. Note that this is UNTESTED EMAIL LINGO and doesn't have any error 
trapping or testing for what type of member is created after the paste 
function. Check into "Type (cast member property)" in the Lingo Dictionary. 
Also, beware of empty text in "membername" or duplicate names.

-- over simplified
global gFrame
on mouseUp
   newMem = new(#text, castLib "externalcast")
   newMem.pasteClipBoardInto( )
   newMem.name = member("entercastname").text
   -- assumes you have a "standIn" member in sprite x
    -- replace x with your sprite number
   sprite(x).member = newMem
   gFrame = gFrame + 1
   member("frame").text = string(gFrame )
end

Again, I did not test the above script in your scenario. Chances are you 
would need to use a global object or global variable that stores all the 
information as the user creates the slides. Then your bitmap sprite might 
check this variable in its beginSprite handler so that it knows which 
member it's supposed to display. Perhaps a global list that you update at 
the end of each paste method. The list could look something like:

lBitmaps = ["flower", "car", "boat"]

This could also be used by the paste button to ensure the user doesn't try 
to use the same name twice. A property list may be even more appropriate here.

>6. a Back button to review the entries already made.

If you're actually using Score frames:
on mouseUp
   go the frame - 1
end

Otherwise, perhaps:

global gFrame
global lBitmaps
on mouseUp
   gFrame = gFrame - 1
   if gFrame = 0 then gFrame = 1
   sprite(x).member = member(lBitmaps[gFrame])
end

>7. This whole movie then is made into a projector to do this in a runtime 
>situation on both platforms. With a projector named

The list I mentioned above would need to be stored in such a way that the 
projector can read it on start up. Several options are available here, 
including reading/writing to a text file with fileIO or get/setPref (if not 
running from a CD), storing the list as a string in a field member of your 
saveable cast, using the new propSave Xtra, etc. There are several articles 
available at the usual Director sites for saving information via different 
methods.

>"data projector" .. This would of course enlarge and would save a complete 
>named cast to be later used for other projects.

This can be accomplished with the Lingo 'save' command. If they need to 
create separate shows rather than constantly expanding the current show, 
you could use fileIO to allow the user to provide a name for the cast & let 
them open that cast later for presentation (get the name & set the fileName 
of a dummy external cast).

So, in my wee-hours-of-the-morning ways of thought, I hope I've presented 
some concepts you might be able to use. Re-reading my reply, I can see that 
I added concepts as I wrote, such as the lBitmaps variable. I certainly 
haven't considered all the avenues, contingencies, or consequences. For 
instance, it just occurred to me that your projector will need to know 
whether it's in "edit" mode or "display" mode (use one frame for 
editing/creating and a different frame for displaying?). Clear? Undo? 
Change the order of the slides? Change bitmap position? Automatic/manual 
modes for presentation? Add narration, text, video? . . .

OK, I'd better start the coffee.

Hopefully it'll get you started.


--
Mark A. Boyd
Keep-On-Learnin' :)


[To remove yourself from this list, or to change to digest mode, go to
http://www.penworks.com/LUJ/lingo-l.cgi  To post messages to the list,
email [EMAIL PROTECTED]  (Problems, email [EMAIL PROTECTED])
Lingo-L is for learning and helping with programming Lingo.  Thanks!]

Reply via email to